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 = [">", " 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