Repository: antgroup/agentUniverse (language: python)

Issue:
improvement: tweak jsonl and excel name format in dataAgent.



Discussion / hints:

Fix patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7ec09f51..132b6b2f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -24,6 +24,35 @@ Note - Additional remarks regarding the version.
 ***************************************************
 
 # Version Update History
+## [0.0.11] - 2024-07-11
+### Added
+- DataAgent Autonomous Data Agent MVP Version Released
+  - Minimum Viable Product version, DataAgent aims to empower your agent with the capability of self-assessment and evolution through intelligent agent abilities. For detailed information, please refer to the user documentation.
+- Added intermediate information streaming output capabilities in PEER and ReAct modes
+
+### Note
+- Latest PEER research findings released
+  - This paper provides a detailed introduction to the mechanisms and principles of the PEER multi-agent framework. Experimental validation proves the advancement of the PEER model. For detailed information, please refer to the user documentation.
+- Added use cases
+  - Andrew Ng's Reflexive Workflow Translation Agent Replication
+- Some code optimizations and documentation updates.
+
+## [0.0.10] - 2024-06-28
+### Added
+- Added standard integration for the DeepSeek model in the LLM module.
+- Added a new OpenAI general protocol wrapper class, OpenAIStyleLLM.
+  - Models using the OpenAI protocol can be configured directly.
+- Added a new LangChain tool wrapper class, LangChainTool, with several example tools for search and execution.
+  - LangChain tools can be configured directly.
+- Added Agent information collection capability in the monitor module.
+
+### Note
+- Added use cases.
+  - Supplemented documentation with a financial event analysis case study using PEER collaborative mode.
+- Added several new documents for LLM components, tool components, and the Monitor module.
+- Updated the new README.
+- Some code optimizations and documentation updates.
+
 ## [0.0.9] - 2024-06-14
 ### Added
 - Added standard integration for Claude and Ollama LLM components
diff --git a/CHANGELOG_zh.md b/CHANGELOG_zh.md
index 600479be..999b56eb 100644
--- a/CHANGELOG_zh.md
+++ b/CHANGELOG_zh.md
@@ -24,6 +24,35 @@ Note - 对于版本的额外说明。
 ***************************************************
 
 # 版本更新记录
+## [0.0.11] - 2024-07-11
+### Added
+- DataAgent数据自治智能体MVP版本发布
+  - Minimum Viable Product版本，DataAgent旨在使用智能体能力让您的Agent拥有自我评价与演进的能力，详细内容请查阅用户文档。
+- 增加PEER、ReAct模式中间信息流式输出能力
+
+### Note
+- PEER最新研究成果发布
+  - 该文献详细介绍了介绍了PEER多智能体框架的机制原理，同时在实验部分通过验证证明了PEER模式的先进性，详细内容请查阅用户文档。
+- 新增使用案例
+  - 吴恩达反思工作流翻译智能体复刻
+- 部分代码优化与文档更新
+
+## [0.0.10] - 2024-06-28
+### Added
+- LLM组件新增DeepSeek模型标准接入
+- 新增OpenAI通用协议包装类OpenAIStyleLLM
+  - openai协议类模型接入可直接配置
+- 新增LangChain工具包装类LangChainTool，新增搜索类、执行类示例工具若干
+  - LangChain工具接入可直接配置
+- monitor模块新增Agent纬度信息采集能力
+
+### Note
+- 新增使用案例
+  - PEER协同模式的金融事件分析案例文档补充
+- 新增若干LLM组件、工具组件、Monitor模块文档
+- 新版README更新
+- 部分代码优化与文档更新
+
 ## [0.0.9] - 2024-06-14
 ### Added
 - LLM组件新增claude、ollama标准接入
diff --git a/README.md b/README.md
index ee6656b2..563522c9 100644
--- a/README.md
+++ b/README.md
@@ -5,62 +5,125 @@ Language version: [English](./README.md) | [中文](./README_zh.md) | [日本語
 ![](https://img.shields.io/badge/framework-agentUniverse-pink)
 ![](https://img.shields.io/badge/python-3.10%2B-blue?logo=Python)
 [![](https://img.shields.io/badge/%20license-Apache--2.0-yellow)](LICENSE)
-[![Static Badge](https://img.shields.io/badge/pypi-v0.0.9-blue?logo=pypi)](https://pypi.org/project/agentUniverse/)
+[![Static Badge](https://img.shields.io/badge/pypi-v0.0.11-blue?logo=pypi)](https://pypi.org/project/agentUniverse/)
 
 ![](docs/guidebook/_picture/logo_bar.jpg)
 ****************************************
 
-## Overview
-agentUniverse is a framework for developing applications powered by multi-agent base on large language model.  It provides all the essential components for building a single agent, and a multi-agent collaboration mechanism which  serves as a pattern factory that allowing developers to buid and customize multi-agent collaboration patterns. With this framework,  developers can easily construct multi-agent applications, and share the pattern practices from different technical  and business fields.
+## What is agentUniverse?
 
-The framework will come with serveral pre-install multi-agent collaboration patterns which have been proven effective in real business scenarios, and will continue to be enriched in the future. Patterns that are currently about to be released include:
+**agentUniverse is a multi-agent framework based on large language models.** agentUniverse provides you with the flexible and easily extensible capability to build single agents. At its core, agentUniverse features a rich set of multi-agent collaboration mode components (which can be viewed as a Collaboration Mode Factory, or Pattern Factory). These components allow agents to maximize their effectiveness by specializing in different domains to solve problems. agentUniverse also focuses on the integration of domain expertise, helping you seamlessly incorporate domain knowledge into the work of your agents.🎉🎉🎉
 
-- PEER pattern：
-This pattern utilizes four distinct agent roles: Plan, Execute, Express, and Review, to achieve a multi-step breakdown and sequential execution of a complex task. It also performs autonomous iteration based on evaluative feedback which enhancing performance in reasoning and analytical tasks. 
+**🌈🌈🌈agentUniverse helps developers and enterprises to easily build powerful collaborative agents that perform at an expert level in their respective domains.**
 
+![](docs/guidebook/_picture/agent_universe_framework_resize.jpg)
 
-- DOE pattern：
-This pattern consists of three agents: Data-fining agent, which is designed to solve data-intensive and high-computational-precision task; Opinion-inject agent, which combines the data results from first agent and the expert opinions which are pre-collected and structured; the third agent, Express agent generates the final result base on given document type and language style.
-
-More patterns are coming soon...
+We encourage you to practice and share different domain Patterns within the community. The framework comes pre-loaded with several multi-agent collaboration mode components that have been validated in real-world industries and will continue to expand in the future. The components that will be available soon include:
 
-![](docs/guidebook/_picture/agent_universe_framework_resize.jpg)
+* PEER Mode Component: This pattern uses agents with different responsibilities—Plan, Execute, Express, and Review—to break down complex problems into manageable steps, execute the steps in sequence, and iteratively improve based on feedback, enhancing the performance of reasoning and analysis tasks. Typical use cases: Event interpretation, industry analysis.
+* DOE Mode Component: This pattern employs three agents—Data-fining, Opinion-inject, and Express—to improve the effectiveness of tasks that are data-intensive, require high computational precision, and incorporate expert opinions. Typical use cases: Financial report generation.
 
-## agentUniverseSample Project
-[agentUniverse Sample Project](sample_standard_app/README.md)
+More patterns are coming soon...
 
-## Quick Installation
+****************************************
+## Table of Contents
+* [Quick Start](#Quick-Start)
+* [Cases and Example Projects](#Cases-and-Example-Projects)
+* [More](#More)
+  * [Why Use agentUniverse](#Why-Use-agentUniverse)
+  * [Core Features](#Core-Features)
+  * [User Guide](#User-Guide)
+  * [API Reference](#API-Reference)
+  * [Support](#Support)
+  * [Citation](#Citation)
+  * [Acknowledgements](#Acknowledgements)
+****************************************
+## Quick Start
 Using pip:
 ```shell
 pip install agentUniverse
 ```
 
-## Quick Start
 We will show you how to:
-* Prepare the environment and application project
+
+* Prepare the environment and application projects
 * Build a simple agent
-* Use pattern components to complete multi-agent collaboration
-* Test and optimize the performance of the agent
-* Quickly serve the agent
-For details, please read [Quick Start](docs/guidebook/en/1_3_Quick_Start.md).
+* Use mode components for multi-agent collaboration
+* Test and tune the execution effectiveness of an agent
+* Quickly deploy an agent as a service
 
-## Use Cases
+For more details, please read the [Quick Start](./docs/guidebook/en/1_3_Quick_Start.md).
+
+****************************************
+## Cases and Example Projects
+### 🌟 Use Cases
 [Legal Consultation Agent](./docs/guidebook/en/7_1_1_Legal_Consultation_Case.md)
+
 [Python Code Generation and Execution Agent](./docs/guidebook/en/7_1_1_Python_Auto_Runner.md)
+
 [Discussion Group Based on Multi-Turn Multi-Agent Mode](./docs/guidebook/en/6_2_1_Discussion_Group.md)
 
-## Guidebook
-For more detailed information, please refer to the [Guidebook](docs/guidebook/en/0_index.md).
-
-## API Reference
-[readthedocs](https://agentuniverse.readthedocs.io/en/latest/)
-
-## More Ways to Contact Us
-* github: https://github.com/alipay/agentUniverse
-* gitee: https://gitee.com/agentUniverse/agentUniverse
-* gitcode: https://gitcode.com/agentUniverse
-* Stack Overflow: https://stackoverflowteams.com/c/agentuniverse/questions
-* Discord: https://discord.gg/VfhEvJzQ
-* WeChat Official Account: agentUniverse智多星
-* DingTalk Group:
-![](./docs/guidebook/_picture/dingtalk_util20250429.png)
+[Financial Event Analysis Based on PEER Multi-Agent Mode](./docs/guidebook/en/6_4_1_Financial_Event_Analysis_Case.md)
+
+[Andrew Ng's Reflexive Workflow Translation Agent Replication](./docs/guidebook/en/7_1_1_Translation_Case.md)
+
+#### 🚩 DataAgent - Data Autonomous Agent
+agentUniverse has launched DataAgent (Minimum Viable Product Version). DataAgent aims to empower your agent with the capability of self-assessment and evolution through the use of intelligent agent abilities. For more details, please refer to the documentation. [DataAgent - Data Autonomous Agent](./docs/guidebook/en/8_1_1_data_autonomous_agent.md)
+
+### 🌟 Example Projects
+[agentUniverse Example Projects](sample_standard_app)
+
+### 🌟 Product Cases Built with agentUniverse
+['Zhi Xiao Zhu' AI Assistant for Financial Professionals](https://zhu.alipay.com/)
+****************************************
+## More
+### Why Use agentUniverse
+💡 [Why Use agentUniverse?](./docs/guidebook/en/1_Why_Use_agentUniverse.md)
+
+### Core Features
+
+* **Rich Multi-Agent Collaboration Modes:** Provides industry-validated collaboration modes such as PEER (Plan/Execute/Express/Review) and DOE (Data-fining/Opinion-inject/Express). It also supports user-defined patterns for new modes, enabling organic collaboration among multiple agents.
+* **Customizable Components:** All framework components, including LLM, knowledge, tools, and memory, are customizable, allowing users to enhance their dedicated agents.
+* **Seamless Integration of Domain Expertise:** Offers capabilities for domain-specific prompts, knowledge construction, and management, and supports domain-level SOP orchestration and embedding, aligning agents to the expert level in their fields.
+
+💡 For more features details, see the [Core Features of agentUniverse](./docs/guidebook/en/1_Core_Features.md).
+
+### User Guide
+💡 For more detailed information, please read the [User Guide](./docs/guidebook/en/0_index.md).
+
+### API Reference
+💡 Please read the [API Reference](https://agentuniverse.readthedocs.io/en/latest/).
+
+### Support
+#### Submit Questions via GitHub Issues
+😊 We recommend submitting your queries using [GitHub Issues](https://github.com/alipay/agentUniverse/issues), we typically respond within 2 days.
+
+#### Contact Us via Discord
+😊 Join our [Discord Channel](https://discord.gg/DHFcdkWAhn) to interact with us.
+
+#### Contact Us via Administrator Email
+😊 Email: [jerry.zzw@antgroup.com](mailto:jerry.zzw@antgroup.com)
+
+#### twitter
+ID: [@agentuniverse_](https://x.com/agentuniverse_)
+
+### Citation
+The agentUniverse project is supported by the following research achievements.
+
+BibTeX formatted
+```text
+@misc{wang2024peerexpertizingdomainspecifictasks,
+      title={PEER: Expertizing Domain-Specific Tasks with a Multi-Agent Framework and Tuning Methods}, 
+      author={Yiying Wang and Xiaojing Li and Binzhu Wang and Yueyang Zhou and Han Ji and Hong Chen and Jinshi Zhang and Fei Yu and Zewei Zhao and Song Jin and Renji Gong and Wanqing Xu},
+      year={2024},
+      eprint={2407.06985},
+      archivePrefix={arXiv},
+      primaryClass={cs.AI},
+      url={https://arxiv.org/abs/2407.06985}, 
+}
+```
+Overview: This document provides a detailed introduction to the mechanisms and principles of the PEER multi-agent framework. In the experimental section, scores were assigned across seven dimensions: completeness, relevance, conciseness, factualness, logicality, structure, and comprehensiveness (each dimension has a maximum score of 5 points). The PEER model scored higher on average in each evaluation dimension compared to BabyAGI and demonstrated significant advantages in the dimensions of completeness, relevance, logicality, structure, and comprehensiveness. Additionally, the PEER model achieved a superior rate of 83% over BabyAGI using the GPT-3.5 Turbo (16k) model, and 81% using the GPT-4 model. For more details, please refer to the document.
+https://arxiv.org/pdf/2407.06985
+
+## Acknowledgements
+This project is partially built on excellent open-source projects such as langchain, pydantic, gunicorn, flask, SQLAlchemy, chromadb, etc. (The detailed dependency list can be found in pyproject.toml). We would like to extend special thanks to the related projects and contributors. 🙏🙏🙏
diff --git a/README_jp.md b/README_jp.md
index ec284e38..1fd7c690 100644
--- a/README_jp.md
+++ b/README_jp.md
@@ -5,7 +5,7 @@
 ![](https://img.shields.io/badge/framework-agentUniverse-pink)
 ![](https://img.shields.io/badge/python-3.10%2B-blue?logo=Python)
 [![](https://img.shields.io/badge/%20license-Apache--2.0-yellow)](LICENSE)
-[![Static Badge](https://img.shields.io/badge/pypi-v0.0.9-blue?logo=pypi)](https://pypi.org/project/agentUniverse/)
+[![Static Badge](https://img.shields.io/badge/pypi-v0.0.10-blue?logo=pypi)](https://pypi.org/project/agentUniverse/)
 
 ![](docs/guidebook/_picture/logo_bar.jpg)
 ****************************************
@@ -45,9 +45,13 @@ pip install agentUniverse
 
 ## 使用ケース
 [法律相談Agent](./docs/guidebook/en/7_1_1_Legal_Consultation_Case.md)
+
 [Pythonコード生成と実行Agent](./docs/guidebook/en/7_1_1_Python_Auto_Runner.md)
+
 [多回多Agentによるディスカッショングループ](./docs/guidebook/en/6_2_1_Discussion_Group.md)
 
+[PEERマルチAgentモードに基づいた金融イベント分析](./docs/guidebook/en/6_4_1_Financial_Event_Analysis_Case.md)
+
 ## ガイドブック
 詳細情報については、[ガイドブック](docs/guidebook/en/0_index.md)を参照してください。
 
@@ -59,7 +63,5 @@ pip install agentUniverse
 * gitee: https://gitee.com/agentUniverse/agentUniverse
 * gitcode: https://gitcode.com/agentUniverse
 * Stack Overflow: https://stackoverflowteams.com/c/agentuniverse/questions
-* Discord: https://discord.gg/VfhEvJzQ
+* Discord: https://discord.gg/DHFcdkWAhn
 * WeChat公式アカウント: agentUniverse智多星
-* DingTalkグループ:
-![](./docs/guidebook/_picture/dingtalk_util20250429.png)
diff --git a/README_zh.md b/README_zh.md
index d35db732..4cd29a73 100644
--- a/README_zh.md
+++ b/README_zh.md
@@ -5,39 +5,44 @@
 ![](https://img.shields.io/badge/framework-agentUniverse-pink)
 ![](https://img.shields.io/badge/python-3.10%2B-blue?logo=Python)
 [![](https://img.shields.io/badge/%20license-Apache--2.0-yellow)](LICENSE)
-[![Static Badge](https://img.shields.io/badge/pypi-v0.0.9-blue?logo=pypi)](https://pypi.org/project/agentUniverse/)
+[![Static Badge](https://img.shields.io/badge/pypi-v0.0.11-blue?logo=pypi)](https://pypi.org/project/agentUniverse/)
 
 ![](docs/guidebook/_picture/logo_bar.jpg)
 ****************************************
 
-## 项目介绍
+## agentUniverse是什么？
 
-本框架是一个大模型多智能体框架。核心提供了多智能体协作编排组件，其相当于一个模式工厂（pattern factory），允许开发者对多智能体协作模式进行开发定制，同时附带了搭建单一智能体的全部关键组件。开发者可以基于本框架轻松构建多智能体应用，并通过社区对不同领域的pattern实践进行交流共享。
+**agentUniverse 是一个基于大型语言模型的多智能体框架。** agentUniverse为您提供灵活易拓展的单智能体构建能力；agentUniverse核心拥有丰富的多智能体协同模式组件（可视为一个协同模式工厂Pattern Factory），它能让智能体们各司其职在解决不同领域问题时发挥最大的能力；同时agentUniverse专注于领域经验的融合，帮助您轻松将领域经验融入到智能体的工作中。🎉🎉🎉
 
-框架将预置有若干已在真实产业中验证有效的多智能体协作模式组件，并在未来持续丰富。目前即将开放的模式组件包括：
-
-- PEER 模式组件：
-该pattern通过计划（Plan）、执行（Execute）、表达（Express）、评价（Review）四个不同职责的智能体，实现对复杂问题的多步拆解、分步执行，并基于评价反馈进行自主迭代，最终提升推理分析类任务表现。典型适用场景：事件解读、行业分析
-
-
-- DOE 模式组件：
-该pattern通过数据精制（Data-fining）、观点注入（Opinion-inject）、表达（Express）三个智能体，实现对数据密集、高计算精度、融合专家观点的生成任务的效果提升。典型适用场景：财报生成
-
-更多模式组件持续推出中...
+**🌈🌈🌈agentUniverse帮助开发者、企业轻松构建出领域专家级别的强大智能体协同为您工作。**
 
 ![](docs/guidebook/_picture/agent_universe_framework_resize.jpg)
 
+我们期待您通过社区对不同领域的Pattern进行实践与交流共享，框架也预置有若干已在真实产业中验证有效的多智能体协作模式组件，并在未来持续丰富。目前即将开放的模式组件包括：
+* PEER 模式组件： 该pattern通过计划（Plan）、执行（Execute）、表达（Express）、评价（Review）四个不同职责的智能体，实现对复杂问题的多步拆解、分步执行，并基于评价反馈进行自主迭代，最终提升推理分析类任务表现。典型适用场景：事件解读、行业分析
+* DOE 模式组件： 该pattern通过数据精制（Data-fining）、观点注入（Opinion-inject）、表达（Express）三个智能体，实现对数据密集、高计算精度、融合专家观点的生成任务的效果提升。典型适用场景：财报生成
 
-## agentUniverse 示例项目
-[agentUniverse 示例项目](sample_standard_app/README_zh.md)
+更多模式组件持续推出中...
 
-## 快速安装
+****************************************
+## 目录
+* [快速开始](#快速开始)
+* [案例与样例工程](#案例与样例工程)
+* [更多](#更多)
+  * [为什么使用agentUniverse](#为什么使用agentUniverse)
+  * [核心特性](#核心特性)
+  * [用户指南](#用户指南)
+  * [API参考](#API参考)
+  * [支持](#支持)
+  * [文献](#文献)
+  * [鸣谢](#鸣谢)
+****************************************
+## 快速开始
 使用pip：
 ```shell
 pip install agentUniverse
 ```
 
-## 快速开始
 我们将向您展示如何：
 * 进行环境与应用工程准备
 * 构建一个简单的agent
@@ -46,24 +51,91 @@ pip install agentUniverse
 * 对agent进行快速服务化
 
 详情请阅读[快速开始](docs/guidebook/zh/1_3_%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B.md) 。
-
-## 使用案例
+****************************************
+## 案例与样例工程
+### 🌟 使用案例
 [法律咨询Agent](./docs/guidebook/zh/7_1_1_法律咨询案例.md)
+
 [Python代码生成与执行Agent](./docs/guidebook/zh/7_1_1_Python自动执行案例.md)
+
 [基于多轮多Agent的讨论小组](./docs/guidebook/zh/6_2_1_讨论组.md)
 
-## 用户指南
-更多详细信息，请参阅[指南](docs/guidebook/zh/0_%E7%9B%AE%E5%BD%95.md) 。
+[基于PEER协同模式的金融事件分析](./docs/guidebook/zh/6_4_1_金融事件分析案例.md)
+
+[吴恩达反思工作流翻译智能体复刻](./docs/guidebook/zh/7_1_1_翻译案例.md)
+
+
+#### 🚩 DataAgent - 数据自治智能体
+agentUniverse推出了DataAgent（Minimum Viable Product版本）, DataAgent旨在使用智能体能力让您的Agent拥有自我评价与演进的能力。详情见文档: [DataAgent - 数据自治智能体](./docs/guidebook/zh/8_1_1_数据自治智能体.md)
+
+### 🌟 示例项目
+[agentUniverse 示例项目](sample_standard_app)
+
+### 🌟 使用aU构建的产品案例
+[支小助 金融从业专家AI助手](https://zhu.alipay.com/)
+****************************************
+## 更多
+### 为什么使用agentUniverse
+💡 [为什么使用agentUniverse?](./docs/guidebook/zh/1_为什么选择agentUniverse.md)
+
+### 核心特性
+
+* **丰富的多智能体协同模式：** 提供PEER（Plan/Execute/Express/Review）、DOE（Data-fining/Opinion-inject/Express）等产业中验证有效的协同模式，同时支持用户自定义编排新模式，让多个智能体有机合作；
+
+* **所有组件均可定制：** LLM、知识、工具、记忆等所有框架组件均提供自定义能力，供用户来增强专属智能体；
+
+* **轻松融入领域经验：** 提供领域prompt、知识构建与管理的能力，同时支持领域级SOP编排与注入，将智能体对齐至领域专家级别；
 
-## API 参考
-[readthedocs](https://agentuniverse.readthedocs.io/en/latest/)
+💡 更多特点见[agentUniverse核心特性](docs/guidebook/zh/1_核心特性.md)部分。
 
-## 更多方式联系我们
-* github: https://github.com/alipay/agentUniverse
-* gitee: https://gitee.com/agentUniverse/agentUniverse
-* gitcode: https://gitcode.com/agentUniverse
-* Stack Overflow: https://stackoverflowteams.com/c/agentuniverse/questions
-* Discord: https://discord.gg/VfhEvJzQ
-* 微信公众号: agentUniverse智多星
-* 钉钉答疑群:
+### 用户指南
+💡 更多详细信息，请阅读[用户指南](docs/guidebook/zh/0_%E7%9B%AE%E5%BD%95.md) 。
+
+### API参考
+💡 请阅读[readthedocs](https://agentuniverse.readthedocs.io/en/latest/) 。
+
+### 支持
+#### 通过github issue提交疑问
+😊 我们建议您使用[github issue](https://github.com/alipay/agentUniverse/issues) 提交您的疑问, 我们通常会在2日内回复。
+
+#### 通过Discord联系我们
+😊 加入我们的 [Discord频道](https://discord.gg/DHFcdkWAhn) 与我们进行交流。
+
+#### 通过钉钉群联系我们
+😊 加入我们的钉钉答疑群与我们联系。
 ![](./docs/guidebook/_picture/dingtalk_util20250429.png)
+
+#### 通过管理员Email联系我们
+😊 Email: [jerry.zzw@antgroup.com](mailto:jerry.zzw@antgroup.com)
+
+#### 微信公众号
+
+😊 公众号ID：**agentUniverse智多星**
+
+![](./docs/guidebook/_picture/wechat_official.png)
+
+更多相关的文章与资讯你可以在微信公众号中获取。
+
+#### twitter
+ID: [@agentuniverse_](https://x.com/agentuniverse_)
+
+### 文献
+agentUniverse项目基于以下的研究成果支撑。
+
+BibTeX formatted
+```text
+@misc{wang2024peerexpertizingdomainspecifictasks,
+      title={PEER: Expertizing Domain-Specific Tasks with a Multi-Agent Framework and Tuning Methods}, 
+      author={Yiying Wang and Xiaojing Li and Binzhu Wang and Yueyang Zhou and Han Ji and Hong Chen and Jinshi Zhang and Fei Yu and Zewei Zhao and Song Jin and Renji Gong and Wanqing Xu},
+      year={2024},
+      eprint={2407.06985},
+      archivePrefix={arXiv},
+      primaryClass={cs.AI},
+      url={https://arxiv.org/abs/2407.06985}, 
+}
+```
+文献简介：该文献详细介绍了介绍了PEER多智能体框架的机制原理，同时在实验部分分别从**完整性、相关性、紧凑性、事实性、逻辑性、结构性和全面性七个维度进行打分（各纬度满分为5分）**，PEER模式在每个测评维度的平均分数均高于BabyAGI，且在**完整性、相关性、逻辑性、结构性和全面性五个纬度有显著优势**；同时PEER模式在 GPT-3.5 turbo (16k) 模型下相较于 BabyAGI 的择优胜率达到 83%，在 GPT-4o 模型下择优胜率达到 81%，更多详情请阅读文献。
+https://arxiv.org/pdf/2407.06985
+
+## 鸣谢
+本项目部分基于langchain、pydantic、gunicorn、flask、SQLAlchemy、chromadb等（详细依赖列表可见pyproject.toml）优秀开源项目实现，在此特别感谢相关项目与关联方。 🙏🙏🙏
diff --git a/agentuniverse/agent/action/knowledge/knowledge.py b/agentuniverse/agent/action/knowledge/knowledge.py
index f8e631a7..d6fc4920 100644
--- a/agentuniverse/agent/action/knowledge/knowledge.py
+++ b/agentuniverse/agent/action/knowledge/knowledge.py
@@ -5,7 +5,10 @@
 # @Author  : wangchongshi
 # @Email   : wangchongshi.wcs@antgroup.com
 # @FileName: knowledge.py
-from typing import Optional, Dict, List, Any
+from typing import Optional, Dict, List
+
+from langchain_core.utils.json import parse_json_markdown
+from langchain.tools import Tool as LangchainTool
 
 from agentuniverse.agent.action.knowledge.reader.reader import Reader
 from agentuniverse.agent.action.knowledge.store.document import Document
@@ -77,3 +80,37 @@ def initialize_by_component_configer(self, component_configer: KnowledgeConfiger
         if component_configer.ext_info:
             self.ext_info = component_configer.ext_info
         return self
+
+    def langchain_query(self, query: str) -> str:
+        """Query the knowledge using LangChain.
+
+        Query documents from the store and return the results.
+        """
+        parse_query = parse_json_markdown(query)
+        query = Query(**parse_query)
+        knowledge = self.store.query(query)
+        res = ['This is Query Result']
+        for doc in knowledge:
+            res.append(doc.text)
+        return "\n=========================================\n".join(res)
+
+    def as_langchain_tool(self) -> LangchainTool:
+        """Convert the Knowledge object to a LangChain tool.
+
+        Returns:
+            Any: the LangChain tool object
+        """
+        args_description = """
+        This is a knowledge base tool, which stores the content you may need. To use this tool, you need to give a json string with the following format:
+        ```json
+        {
+            "query_str": "<your query here>",
+            "top_k": <number of results to return>,
+        }
+        ```
+        """
+        return LangchainTool(
+            name=self.name,
+            description=self.description + args_description,
+            func=self.langchain_query,
+        )
diff --git a/agentuniverse/agent/agent.py b/agentuniverse/agent/agent.py
index 2f4099fc..d6fe3034 100644
--- a/agentuniverse/agent/agent.py
+++ b/agentuniverse/agent/agent.py
@@ -6,21 +6,26 @@
 # @Email   : lc299034@antgroup.com
 # @FileName: agent.py
 """The definition of agent paradigm."""
+import json
 from abc import abstractmethod
 from datetime import datetime
 from typing import Optional
 
+from langchain_core.utils.json import parse_json_markdown
+
 from agentuniverse.agent.agent_model import AgentModel
 from agentuniverse.agent.input_object import InputObject
 from agentuniverse.agent.output_object import OutputObject
 from agentuniverse.agent.plan.planner.planner import Planner
 from agentuniverse.agent.plan.planner.planner_manager import PlannerManager
+from agentuniverse.base.annotation.trace import trace_agent
 from agentuniverse.base.component.component_base import ComponentBase
 from agentuniverse.base.component.component_enum import ComponentEnum
 from agentuniverse.base.config.application_configer.application_config_manager \
     import ApplicationConfigManager
 from agentuniverse.base.config.component_configer.configers.agent_configer \
     import AgentConfiger
+from agentuniverse.base.util.logging.logging_util import LOGGER
 from agentuniverse.llm.llm import LLM
 
 
@@ -66,6 +71,7 @@ def parse_result(self, planner_result: dict) -> dict:
         """
         pass
 
+    @trace_agent
     def run(self, **kwargs) -> OutputObject:
         """Agent instance running entry.
 
@@ -156,3 +162,35 @@ def initialize_by_component_configer(self, component_configer: AgentConfiger) ->
                                                        plan=plan, memory=memory, action=action)
         self.agent_model = agent_model
         return self
+
+    def langchain_run(self, input: str, callbacks=None, **kwargs):
+        """Run the agent model using LangChain."""
+        try:
+            parse_result = parse_json_markdown(input)
+        except Exception as e:
+            LOGGER.error(f"langchain run parse_json_markdown error,input(parse_result) error({str(e)})")
+            return "Error , Your Action Input is not a valid JSON string"
+        output_object = self.run(**parse_result, callbacks=callbacks, **kwargs)
+        result_dict = {}
+        for key in self.output_keys():
+            result_dict[key] = output_object.get_data(key)
+        return result_dict
+
+    def as_langchain_tool(self):
+        """Convert to LangChain tool."""
+        from langchain.agents.tools import Tool
+        format_dict = {}
+        for key in self.input_keys():
+            format_dict.setdefault(key, "input val")
+        format_str = json.dumps(format_dict)
+
+        args_description = f"""
+        to use this tool,your input must be a json string,must contain all keys of {self.input_keys()},
+        and the value of the key must be a json string,the format of the json string is as follows:
+        ```{format_str}```
+        """
+        return Tool(
+            name=self.agent_model.info.get("name"),
+            func=self.langchain_run,
+            description=self.agent_model.info.get("description") + args_description
+        )
diff --git a/agentuniverse/agent/default/executing_agent/executing_agent.py b/agentuniverse/agent/default/executing_agent/executing_agent.py
index 94e4143d..4e4a5aa5 100644
--- a/agentuniverse/agent/default/executing_agent/executing_agent.py
+++ b/agentuniverse/agent/default/executing_agent/executing_agent.py
@@ -8,8 +8,11 @@
 import copy
 from concurrent.futures import ThreadPoolExecutor, wait, ALL_COMPLETED
 from typing import Optional, Any
+
+from agentuniverse.agent.action.tool.tool_manager import ToolManager
 from agentuniverse.agent.agent import Agent
 from agentuniverse.agent.input_object import InputObject
+from agentuniverse.agent.plan.planner.planner import Planner
 from agentuniverse.agent.plan.planner.planner_manager import PlannerManager
 
 
@@ -73,11 +76,39 @@ def execute(self, input_object: InputObject, agent_input: dict) -> dict:
         framework = agent_input.get('framework', [])
         futures = []
         for task in framework:
-            agent_input_copy: dict = copy.deepcopy(agent_input)
+            # note: agent input shallow copy.
+            agent_input_copy: dict = dict(agent_input)
             agent_input_copy['input'] = task
+            planner: Planner = PlannerManager().get_instance_obj(self.agent_model.plan.get('planner').get('name'))
             futures.append(
-                self.executor.submit(
-                    PlannerManager().get_instance_obj(self.agent_model.plan.get('planner').get('name')).invoke,
-                    self.agent_model, agent_input_copy, input_object))
+                self.executor.submit(planner.invoke, self.agent_model, agent_input_copy,
+                                     self.process_intput_object(input_object, task, planner.input_key)))
         wait(futures, return_when=ALL_COMPLETED)
         return {'futures': futures}
+
+    def process_intput_object(self, input_object: InputObject, subtask: str, planner_input_key: str) -> InputObject:
+        """Process input object for the executing agent.
+
+        Args:
+            input_object (InputObject): input parameters passed by the user.
+            subtask (str): subtask to be executed.
+            planner_input_key (str): planner input key.
+
+        Returns:
+            input_object (InputObject): processed input object.
+        """
+        # get agent toolsets.
+        action: dict = self.agent_model.action or dict()
+        tools: list = action.get('tool') or list()
+        # note: input object shallow copy.
+        input_object_copy: InputObject = InputObject(input_object.to_dict())
+        # wrap input_object for agent knowledge.
+        input_object_copy.add_data(planner_input_key, subtask)
+        # wrap input_object for agent toolsets.
+        for tool_name in tools:
+            tool = ToolManager().get_instance_obj(tool_name)
+            if tool is None:
+                continue
+            # note: only insert the first key of tool input.
+            input_object_copy.add_data(tool.input_keys[0], subtask)
+        return input_object_copy
diff --git a/agentuniverse/agent/memory/chat_memory.py b/agentuniverse/agent/memory/chat_memory.py
index 4e29d158..8eb297ff 100644
--- a/agentuniverse/agent/memory/chat_memory.py
+++ b/agentuniverse/agent/memory/chat_memory.py
@@ -50,17 +50,18 @@ def as_langchain(self) -> BaseChatMemory:
                                                      max_token_limit=self.max_tokens, messages=self.messages,
                                                      prompt_version=self.prompt_version)
 
-    def set_by_agent_model(self, **kwargs) -> None:
+    def set_by_agent_model(self, **kwargs):
         """ Assign values of parameters to the ChatMemory model in the agent configuration."""
-        super().set_by_agent_model(**kwargs)
+        copied_obj = super().set_by_agent_model(**kwargs)
         if 'messages' in kwargs and kwargs['messages']:
-            self.messages = kwargs['messages']
+            copied_obj.messages = kwargs['messages']
         if 'llm' in kwargs and kwargs['llm']:
-            self.llm = kwargs['llm']
+            copied_obj.llm = kwargs['llm']
         if 'input_key' in kwargs and kwargs['input_key']:
-            self.input_key = kwargs['input_key']
+            copied_obj.input_key = kwargs['input_key']
         if 'output_key' in kwargs and kwargs['output_key']:
-            self.output_key = kwargs['output_key']
+            copied_obj.output_key = kwargs['output_key']
+        return copied_obj
 
     def initialize_by_component_configer(self, component_configer: MemoryConfiger) -> 'ChatMemory':
         """Initialize the chat memory by the ComponentConfiger object.
diff --git a/agentuniverse/agent/memory/langchain_instance.py b/agentuniverse/agent/memory/langchain_instance.py
index bbbe5258..4b3936c6 100644
--- a/agentuniverse/agent/memory/langchain_instance.py
+++ b/agentuniverse/agent/memory/langchain_instance.py
@@ -9,6 +9,7 @@
 
 from langchain_core.messages import BaseMessage, get_buffer_string
 from langchain.memory import ConversationSummaryBufferMemory, ConversationTokenBufferMemory
+from langchain_core.output_parsers import StrOutputParser
 
 from agentuniverse.agent.memory.enum import ChatMessageEnum
 from agentuniverse.agent.memory.message import Message
@@ -115,9 +116,8 @@ def predict_new_summary(
         )
         prompt_version = self.prompt_version if self.prompt_version else 'chat_memory.summarizer_cn'
         prompt: Prompt = PromptManager().get_instance_obj(prompt_version)
-        chain = prompt.as_langchain() | self.llm
-        res = chain.invoke(input={'summary': existing_summary, 'new_lines': new_lines})
-        return res.content
+        chain = prompt.as_langchain() | self.llm | StrOutputParser()
+        return chain.invoke(input={'summary': existing_summary, 'new_lines': new_lines})
 
 
 class AuConversationTokenBufferMemory(ConversationTokenBufferMemory):
diff --git a/agentuniverse/agent/memory/memory.py b/agentuniverse/agent/memory/memory.py
index a76389d5..edee9235 100644
--- a/agentuniverse/agent/memory/memory.py
+++ b/agentuniverse/agent/memory/memory.py
@@ -40,12 +40,15 @@ def as_langchain(self) -> BaseMemory:
         """Convert the agentUniverse(aU) memory class to the langchain memory class."""
         pass
 
-    def set_by_agent_model(self, **kwargs) -> None:
+    def set_by_agent_model(self, **kwargs):
         """ Assign values of parameters to the Memory model in the agent configuration."""
+        # note: default shallow copy
+        copied_obj = self.model_copy()
         if 'memory_key' in kwargs and kwargs['memory_key']:
-            self.memory_key = kwargs['memory_key']
+            copied_obj.memory_key = kwargs['memory_key']
         if 'max_tokens' in kwargs and kwargs['max_tokens']:
-            self.max_tokens = kwargs['max_tokens']
+            copied_obj.max_tokens = kwargs['max_tokens']
+        return copied_obj
 
     def get_instance_code(self) -> str:
         """Return the full name of the memory."""
diff --git a/agentuniverse/agent/plan/planner/expressing_planner/expressing_planner.py b/agentuniverse/agent/plan/planner/expressing_planner/expressing_planner.py
index 928b723d..6c944d43 100644
--- a/agentuniverse/agent/plan/planner/expressing_planner/expressing_planner.py
+++ b/agentuniverse/agent/plan/planner/expressing_planner/expressing_planner.py
@@ -51,8 +51,8 @@ def invoke(self, agent_model: AgentModel, planner_input: dict, input_object: Inp
             history_messages_key="chat_history",
             input_messages_key=self.input_key,
         ) | StrOutputParser()
-        res = asyncio.run(
-            chain_with_history.ainvoke(input=planner_input, config={"configurable": {"session_id": "unused"}}))
+
+        res = self.invoke_chain(agent_model, chain_with_history, planner_input, chat_history, input_object)
         return {**planner_input, self.output_key: res, 'chat_history': generate_memories(chat_history)}
 
     def handle_prompt(self, agent_model: AgentModel, planner_input: dict) -> Prompt:
diff --git a/agentuniverse/agent/plan/planner/peer_planner/peer_planner.py b/agentuniverse/agent/plan/planner/peer_planner/peer_planner.py
index a25fb3bc..c8de55bb 100644
--- a/agentuniverse/agent/plan/planner/peer_planner/peer_planner.py
+++ b/agentuniverse/agent/plan/planner/peer_planner/peer_planner.py
@@ -42,7 +42,7 @@ def invoke(self, agent_model: AgentModel, planner_input: dict, input_object: Inp
         """
         planner_config = agent_model.plan.get('planner')
         sub_agents = self.generate_sub_agents(planner_config)
-        return self.agents_run(sub_agents, planner_config, planner_input, input_object)
+        return self.agents_run(agent_model, sub_agents, planner_config, planner_input, input_object)
 
     @staticmethod
     def generate_sub_agents(planner_config: dict) -> dict:
@@ -79,7 +79,8 @@ def build_expert_framework(planner_config: dict, input_object: InputObject):
             elif context:
                 input_object.add_data('expert_framework', context)
 
-    def agents_run(self, agents: dict, planner_config: dict, agent_input: dict, input_object: InputObject) -> dict:
+    def agents_run(self, agent_mode: AgentModel, agents: dict, planner_config: dict, agent_input: dict,
+                   input_object: InputObject) -> dict:
         """Planner agents run.
 
         Args:
@@ -125,6 +126,10 @@ def agents_run(self, agents: dict, planner_config: dict, agent_input: dict, inpu
                 for index, one_framework in enumerate(planning_result.get_data('framework')):
                     logger_info += f"[{index + 1}] {one_framework} \n"
                 LOGGER.info(logger_info)
+                self.stream_output(input_object, {"data": {
+                    'output': planning_result.to_dict(),
+                    "agent_info": agent_mode.info
+                }, "type": "planning"})
 
             if not executing_result or jump_step in ["planning", "executing"]:
                 if not executingAgent:
@@ -143,10 +148,14 @@ def agents_run(self, agents: dict, planner_config: dict, agent_input: dict, inpu
                         one_exec_log_info += f"[{index + 1}] output: {one_exec_res['output']}\n"
                         logger_info += one_exec_log_info
                 LOGGER.info(logger_info)
+                self.stream_output(input_object, {"data": {
+                    'output': executing_result.to_dict(),
+                    "agent_info": agent_mode.info
+                }, "type": "executing"})
 
             if not expressing_result or jump_step in ["planning", "executing", "expressing"]:
                 if not expressingAgent:
-                    LOGGER.warn("no expression agent.")
+                    LOGGER.warn("no expressing agent.")
                     expressing_result = OutputObject({})
                 else:
                     LOGGER.info(f"Starting expressing agent.")
@@ -157,10 +166,14 @@ def agents_run(self, agents: dict, planner_config: dict, agent_input: dict, inpu
                 logger_info = f"\nExpressing agent execution result is :\n"
                 logger_info += f"{expressing_result.get_data('output')}"
                 LOGGER.info(logger_info)
+                self.stream_output(input_object, {"data": {
+                    'output': expressing_result.get_data('output'),
+                    "agent_info": agent_mode.info
+                }, "type": "expressing"})
 
             if not reviewing_result or jump_step in ["planning", "executing", "expressing", "reviewing"]:
                 if not reviewingAgent:
-                    LOGGER.warn("no expression agent.")
+                    LOGGER.warn("no reviewing agent.")
                     loopResults.append({
                         "planning_result": planning_result,
                         "executing_result": executing_result,
@@ -172,6 +185,7 @@ def agents_run(self, agents: dict, planner_config: dict, agent_input: dict, inpu
                 else:
                     LOGGER.info(f"Starting reviewing agent.")
                     reviewing_result = reviewingAgent.run(**input_object.to_dict())
+
                     input_object.add_data('reviewing_result', reviewing_result)
 
                     # add reviewing agent log info
@@ -179,7 +193,7 @@ def agents_run(self, agents: dict, planner_config: dict, agent_input: dict, inpu
                     reviewing_info_str = f"review suggestion: {reviewing_result.get_data('suggestion')} \n"
                     reviewing_info_str += f"review score: {reviewing_result.get_data('score')} \n"
                     LOGGER.info(logger_info + reviewing_info_str)
-
+                    self.stream_output(input_object, {"data": reviewing_result.to_dict(), "type": "reviewing"})
                     if reviewing_result.get_data('score') and reviewing_result.get_data('score') >= eval_threshold:
                         loopResults.append({
                             "planning_result": planning_result,
diff --git a/agentuniverse/agent/plan/planner/planner.py b/agentuniverse/agent/plan/planner/planner.py
index c30fd311..4cf36d70 100644
--- a/agentuniverse/agent/plan/planner/planner.py
+++ b/agentuniverse/agent/plan/planner/planner.py
@@ -6,15 +6,18 @@
 # @FileName: planner.py
 """Base class for Planner."""
 from abc import abstractmethod
-import copy
 import logging
-from typing import Optional, List
+from queue import Queue
+from typing import Optional, List, Any
+
+from langchain_core.runnables import RunnableSerializable
 
 from agentuniverse.agent.action.knowledge.knowledge import Knowledge
 from agentuniverse.agent.action.knowledge.knowledge_manager import KnowledgeManager
 from agentuniverse.agent.action.knowledge.store.document import Document
 from agentuniverse.agent.action.knowledge.store.query import Query
 from agentuniverse.agent.action.tool.tool_manager import ToolManager
+from agentuniverse.agent.agent_manager import AgentManager
 from agentuniverse.agent.agent_model import AgentModel
 from agentuniverse.agent.input_object import InputObject
 from agentuniverse.agent.memory.chat_memory import ChatMemory
@@ -27,7 +30,7 @@
 from agentuniverse.llm.llm import LLM
 from agentuniverse.llm.llm_manager import LLMManager
 from agentuniverse.prompt.prompt import Prompt
-from agentuniverse.base.util.memory_util import generate_messages
+from agentuniverse.base.util.memory_util import generate_messages, generate_memories
 
 logging.getLogger().setLevel(logging.ERROR)
 
@@ -84,11 +87,10 @@ def handle_memory(self, agent_model: AgentModel, planner_input: dict) -> ChatMem
         params['input_key'] = self.input_key
         params['output_key'] = self.output_key
 
-        memory: ChatMemory = MemoryManager().get_instance_obj(component_instance_name=memory_name, new_instance=True)
+        memory: ChatMemory = MemoryManager().get_instance_obj(component_instance_name=memory_name)
         if memory is None:
             return None
-        memory.set_by_agent_model(**params)
-        return memory
+        return memory.set_by_agent_model(**params)
 
     def run_all_actions(self, agent_model: AgentModel, planner_input: dict, input_object: InputObject):
         """Tool and knowledge processing.
@@ -101,6 +103,7 @@ def run_all_actions(self, agent_model: AgentModel, planner_input: dict, input_ob
         action: dict = agent_model.action or dict()
         tools: list = action.get('tool') or list()
         knowledge: list = action.get('knowledge') or list()
+        agents: list = action.get('agent') or list()
 
         action_result: list = list()
 
@@ -120,6 +123,16 @@ def run_all_actions(self, agent_model: AgentModel, planner_input: dict, input_ob
             for document in knowledge_res:
                 action_result.append(document.text)
 
+        for agent_name in agents:
+            agent = AgentManager().get_instance_obj(agent_name)
+            if agent is None:
+                continue
+            agent_input = {key: input_object.get_data(key) for key in agent.input_keys()}
+            output_object = agent.run(**agent_input)
+            action_result.append("\n".join([output_object.get_data(key)
+                                            for key in agent.output_keys()
+                                            if output_object.get_data(key) is not None]))
+
         planner_input['background'] = planner_input['background'] or '' + "\n".join(action_result)
 
     def handle_prompt(self, agent_model: AgentModel, planner_input: dict):
@@ -142,9 +155,8 @@ def handle_llm(self, agent_model: AgentModel) -> LLM:
             LLM: The language model.
         """
         llm_name = agent_model.profile.get('llm_model').get('name')
-        llm: LLM = LLMManager().get_instance_obj(component_instance_name=llm_name, new_instance=True)
-        llm.set_by_agent_model(**agent_model.profile.get('llm_model'))
-        return llm
+        llm: LLM = LLMManager().get_instance_obj(component_instance_name=llm_name)
+        return llm.set_by_agent_model(**agent_model.profile.get('llm_model'))
 
     def initialize_by_component_configer(self, component_configer: PlannerConfiger) -> 'Planner':
         """Initialize the planner by the PlannerConfiger object.
@@ -159,3 +171,35 @@ def initialize_by_component_configer(self, component_configer: PlannerConfiger)
         self.input_key = component_configer.input_key or self.input_key
         self.output_key = component_configer.output_key or self.output_key
         return self
+
+    @staticmethod
+    def stream_output(input_object: InputObject, data: dict):
+        """Stream output.
+
+        Args:
+            input_object (InputObject): Agent input object.
+            data (dict): The data to be streamed.
+        """
+        output_stream: Queue = input_object.get_data('output_stream', None)
+        if output_stream is None:
+            return
+        output_stream.put_nowait(data)
+
+    def invoke_chain(self, agent_model: AgentModel, chain: RunnableSerializable[Any, str], planner_input: dict, chat_history,
+               input_object: InputObject):
+
+        if not input_object.get_data('output_stream'):
+            res = chain.invoke(input=planner_input, config={"configurable": {"session_id": "unused"}})
+            return res
+        result = []
+        for token in chain.stream(input=planner_input, config={"configurable": {"session_id": "unused"}}):
+            self.stream_output(input_object, {
+                'type': 'token',
+                'data': {
+                    'chunk': token,
+                    'agent_info': agent_model.info
+                }
+            })
+            result.append(token)
+        return "".join(result)
+
diff --git a/agentuniverse/agent/plan/planner/planning_planner/planning_planner.py b/agentuniverse/agent/plan/planner/planning_planner/planning_planner.py
index 1ca05a0e..d0af3ac4 100644
--- a/agentuniverse/agent/plan/planner/planning_planner/planning_planner.py
+++ b/agentuniverse/agent/plan/planner/planning_planner/planning_planner.py
@@ -52,8 +52,7 @@ def invoke(self, agent_model: AgentModel, planner_input: dict,
             history_messages_key="chat_history",
             input_messages_key=self.input_key,
         ) | StrOutputParser()
-        res = asyncio.run(
-            chain_with_history.ainvoke(input=planner_input, config={"configurable": {"session_id": "unused"}}))
+        res = self.invoke_chain(agent_model, chain_with_history, planner_input, chat_history, input_object)
         return {**planner_input, self.output_key: res, 'chat_history': generate_memories(chat_history)}
 
     def handle_prompt(self, agent_model: AgentModel, planner_input: dict) -> Prompt:
diff --git a/agentuniverse/agent/plan/planner/rag_planner/rag_planner.py b/agentuniverse/agent/plan/planner/rag_planner/rag_planner.py
index 4edb1f6a..984128d6 100644
--- a/agentuniverse/agent/plan/planner/rag_planner/rag_planner.py
+++ b/agentuniverse/agent/plan/planner/rag_planner/rag_planner.py
@@ -5,7 +5,6 @@
 # @Email   : lc299034@antgroup.com
 # @FileName: rag_planner.py
 """Rag planner module."""
-import asyncio
 
 from langchain_core.chat_history import InMemoryChatMessageHistory
 from langchain_core.output_parsers import StrOutputParser
@@ -55,8 +54,7 @@ def invoke(self, agent_model: AgentModel, planner_input: dict,
             history_messages_key="chat_history",
             input_messages_key=self.input_key,
         ) | StrOutputParser()
-        res = asyncio.run(
-            chain_with_history.ainvoke(input=planner_input, config={"configurable": {"session_id": "unused"}}))
+        res = self.invoke_chain(agent_model, chain_with_history, planner_input, chat_history, input_object)
         return {**planner_input, self.output_key: res, 'chat_history': generate_memories(chat_history)}
 
     def handle_prompt(self, agent_model: AgentModel, planner_input: dict) -> ChatPrompt:
diff --git a/agentuniverse/agent/plan/planner/react_planner/react_planner.py b/agentuniverse/agent/plan/planner/react_planner/react_planner.py
index ef1f76f9..9381b6b5 100644
--- a/agentuniverse/agent/plan/planner/react_planner/react_planner.py
+++ b/agentuniverse/agent/plan/planner/react_planner/react_planner.py
@@ -11,8 +11,12 @@
 from langchain.tools import Tool as LangchainTool
 from langchain_core.runnables import RunnableConfig
 
+from agentuniverse.agent.action.knowledge.knowledge import Knowledge
+from agentuniverse.agent.action.knowledge.knowledge_manager import KnowledgeManager
 from agentuniverse.agent.action.tool.tool import Tool
 from agentuniverse.agent.action.tool.tool_manager import ToolManager
+from agentuniverse.agent.agent import Agent
+from agentuniverse.agent.agent_manager import AgentManager
 from agentuniverse.agent.agent_model import AgentModel
 from agentuniverse.agent.input_object import InputObject
 from agentuniverse.agent.memory.chat_memory import ChatMemory
@@ -60,14 +64,14 @@ def invoke(self, agent_model: AgentModel, planner_input: dict,
                                        max_iterations=agent_model.plan.get('planner').get("max_iterations", 15))
 
         return agent_executor.invoke(input=planner_input, memory=memory.as_langchain() if memory else None,
-                                     chat_history=chat_history, config=self.get_run_config(input_object))
+                                     chat_history=chat_history, config=self.get_run_config(agent_model, input_object))
 
     @staticmethod
-    def get_run_config(input_object: InputObject) -> RunnableConfig:
+    def get_run_config(agent_model: AgentModel, input_object: InputObject) -> RunnableConfig:
         config = RunnableConfig()
         callbacks = []
         output_stream = input_object.get_data('output_stream')
-        callbacks.append(StreamOutPutCallbackHandler(output_stream))
+        callbacks.append(StreamOutPutCallbackHandler(output_stream, agent_info=agent_model.info))
         config.setdefault("callbacks", callbacks)
         return config
 
@@ -78,6 +82,15 @@ def acquire_tools(action) -> list[LangchainTool]:
         for tool_name in tool_names:
             tool: Tool = ToolManager().get_instance_obj(tool_name)
             lc_tools.append(tool.as_langchain())
+        knowledge: list = action.get('knowledge') or list()
+        for knowledge_name in knowledge:
+            knowledge_tool: Knowledge = KnowledgeManager().get_instance_obj(knowledge_name)
+            lc_tools.append(knowledge_tool.as_langchain_tool())
+
+        agents: list = action.get('agent') or list()
+        for agent_name in agents:
+            agent_tool: Agent = AgentManager().get_instance_obj(agent_name)
+            lc_tools.append(agent_tool.as_langchain_tool())
         return lc_tools
 
     def handle_prompt(self, agent_model: AgentModel, planner_input: dict) -> Prompt:
diff --git a/agentuniverse/agent/plan/planner/react_planner/stream_callback.py b/agentuniverse/agent/plan/planner/react_planner/stream_callback.py
index 87ec6acd..e417bb3d 100644
--- a/agentuniverse/agent/plan/planner/react_planner/stream_callback.py
+++ b/agentuniverse/agent/plan/planner/react_planner/stream_callback.py
@@ -16,10 +16,13 @@
 class StreamOutPutCallbackHandler(BaseCallbackHandler):
     """Callback Handler that prints to std out."""
 
-    def __init__(self, queue_stream: asyncio.Queue, color: Optional[str] = None) -> None:
+    def __init__(self, queue_stream: asyncio.Queue, color: Optional[str] = None, agent_info: dict = None) -> None:
         """Initialize callback handler."""
         self.queueStream = queue_stream
         self.color = color
+        if agent_info is None:
+            agent_info = {}
+        self.agent_info = agent_info
 
     def on_chain_start(
             self, serialized: Dict[str, Any], inputs: Dict[str, Any], **kwargs: Any
@@ -32,7 +35,13 @@ def on_chain_end(self, outputs: Dict[str, Any], **kwargs: Any) -> None:
     def on_agent_action(
             self, action: AgentAction, color: Optional[str] = None, **kwargs: Any
     ) -> Any:
-        self.queueStream.put_nowait("Thought:"+action.log)
+        self.queueStream.put_nowait({
+            "type": "ReAct",
+            "data": {
+                "output": "\nThought:" + action.log,
+                "agent_info": self.agent_info
+            }
+        })
 
     def on_tool_end(
             self,
@@ -44,9 +53,21 @@ def on_tool_end(
     ) -> None:
         """If not the final action, print out observation."""
         if observation_prefix is not None:
-            self.queueStream.put_nowait(observation_prefix + output)
+            self.queueStream.put_nowait({
+                "type": "ReAct",
+                "data": {
+                    "output": '\n' + observation_prefix + output,
+                    "agent_info": self.agent_info
+                }
+            })
         else:
-            self.queueStream.put_nowait('Observation:'+output)
+            self.queueStream.put_nowait({
+                "type": "ReAct",
+                "data": {
+                    "output": '\n Observation:' + output,
+                    "agent_info": self.agent_info
+                }
+            })
 
     def on_text(
             self,
@@ -61,4 +82,10 @@ def on_agent_finish(
             self, finish: AgentFinish, color: Optional[str] = None, **kwargs: Any
     ) -> None:
         """Run on agent end."""
-        self.queueStream.put_nowait("Thought:" + finish.log + "\n")
+        self.queueStream.put_nowait({
+            "type": "ReAct",
+            "data": {
+                "output": '\nThought:' + finish.output,
+                "agent_info": self.agent_info
+            }
+        })
diff --git a/agentuniverse/agent/plan/planner/reviewing_planner/reviewing_planner.py b/agentuniverse/agent/plan/planner/reviewing_planner/reviewing_planner.py
index 8702bee7..5f304fb2 100644
--- a/agentuniverse/agent/plan/planner/reviewing_planner/reviewing_planner.py
+++ b/agentuniverse/agent/plan/planner/reviewing_planner/reviewing_planner.py
@@ -51,8 +51,7 @@ def invoke(self, agent_model: AgentModel, planner_input: dict, input_object: Inp
             history_messages_key="chat_history",
             input_messages_key=self.input_key,
         ) | StrOutputParser()
-        res = asyncio.run(
-            chain_with_history.ainvoke(input=planner_input, config={"configurable": {"session_id": "unused"}}))
+        res = self.invoke_chain(agent_model, chain_with_history, planner_input, chat_history, input_object)
         return {**planner_input, self.output_key: res, 'chat_history': generate_memories(chat_history)}
 
     def handle_prompt(self, agent_model: AgentModel, planner_input: dict) -> Prompt:
diff --git a/agentuniverse/agent_serve/web/request_task.py b/agentuniverse/agent_serve/web/request_task.py
index 5f32ae8b..3cb13720 100644
--- a/agentuniverse/agent_serve/web/request_task.py
+++ b/agentuniverse/agent_serve/web/request_task.py
@@ -73,8 +73,13 @@ def receive_steps(self):
                                        ensure_ascii=False) + "\n\n"
         if self.canceled():
             return
-        yield "data:" + json.dumps({"result": self.thread.result()},
-                                   ensure_ascii=False) + "\n\n"
+        try:
+            result = self.thread.result()
+            yield "data:" + json.dumps({"result": result},
+                                       ensure_ascii=False) + "\n\n "
+        except Exception as e:
+            LOGGER.error("request task execute Fail: " + str(e))
+            yield "data:" + json.dumps({"error": {"error_msg": str(e)}}) + "\n\n "
 
     def append_steps(self):
         """Tracing async service running state and update it to database."""
@@ -225,7 +230,7 @@ def finished(self):
         self.__request_do__.state = TaskStateEnum.FINISHED.value
 
     @staticmethod
-    def query_request_state(request_id: str) -> dict|None:
+    def query_request_state(request_id: str) -> dict | None:
         """Query the request data in database by given request_id.
 
         Args:
diff --git a/agentuniverse/agent_serve/web/thread_with_result.py b/agentuniverse/agent_serve/web/thread_with_result.py
index 96414c9c..4d0d030e 100644
--- a/agentuniverse/agent_serve/web/thread_with_result.py
+++ b/agentuniverse/agent_serve/web/thread_with_result.py
@@ -30,6 +30,9 @@ def run(self):
                 self._return = self.target(*self.args, **self.kwargs)
             except Exception as e:
                 self.error = e
+            finally:
+                if 'output_stream' in self.kwargs:
+                    self.kwargs['output_stream'].put('{"type": "EOF"}')
 
     def result(self):
         """Wait for target func finished, then return the result or raise an
diff --git a/agentuniverse/base/annotation/trace.py b/agentuniverse/base/annotation/trace.py
index d3333edb..7c7c2078 100644
--- a/agentuniverse/base/annotation/trace.py
+++ b/agentuniverse/base/annotation/trace.py
@@ -8,14 +8,15 @@
 import asyncio
 import functools
 import inspect
+import json
 
 from functools import wraps
 
+from agentuniverse.agent.input_object import InputObject
+from agentuniverse.agent.output_object import OutputObject
 from agentuniverse.base.util.monitor.monitor import Monitor
 from agentuniverse.llm.llm_output import LLMOutput
 
-monitor = Monitor()
-
 
 def trace_llm(func):
     """Annotation: @trace_llm
@@ -37,7 +38,7 @@ async def wrapper_async(*args, **kwargs):
         # not streaming
         if isinstance(result, LLMOutput):
             # add llm invocation info to monitor
-            monitor.trace_llm_invocation(source=func.__qualname__, llm_input=llm_input, llm_output=result.text)
+            Monitor().trace_llm_invocation(source=func.__qualname__, llm_input=llm_input, llm_output=result.text)
             return result
         else:
             # streaming
@@ -47,8 +48,8 @@ async def gen_iterator():
                     llm_output.append(chunk.text)
                     yield chunk
                 # add llm invocation info to monitor
-                monitor.trace_llm_invocation(source=func.__qualname__, llm_input=llm_input,
-                                             llm_output="".join(llm_output))
+                Monitor().trace_llm_invocation(source=func.__qualname__, llm_input=llm_input,
+                                               llm_output="".join(llm_output))
 
             return gen_iterator()
 
@@ -59,14 +60,14 @@ def wrapper_sync(*args, **kwargs):
         # check whether the tracing switch is enabled
         self = llm_input.pop('self', None)
         if self and hasattr(self, 'tracing'):
-            if not self.tracing:
+            if self.tracing is False:
                 return func(*args, **kwargs)
         # invoke function
         result = func(*args, **kwargs)
         # not streaming
         if isinstance(result, LLMOutput):
             # add llm invocation info to monitor
-            monitor.trace_llm_invocation(source=func.__qualname__, llm_input=llm_input, llm_output=result.text)
+            Monitor().trace_llm_invocation(source=func.__qualname__, llm_input=llm_input, llm_output=result.text)
             return result
         else:
             # streaming
@@ -76,8 +77,8 @@ def gen_iterator():
                     llm_output.append(chunk.text)
                     yield chunk
                 # add llm invocation info to monitor
-                monitor.trace_llm_invocation(source=func.__qualname__, llm_input=llm_input,
-                                             llm_output="".join(llm_output))
+                Monitor().trace_llm_invocation(source=func.__qualname__, llm_input=llm_input,
+                                               llm_output="".join(llm_output))
 
             return gen_iterator()
 
@@ -95,3 +96,49 @@ def _get_llm_input(func, *args, **kwargs) -> dict:
     bound_args = sig.bind(*args, **kwargs)
     bound_args.apply_defaults()
     return {k: v for k, v in bound_args.arguments.items()}
+
+
+def trace_agent(func):
+    """Annotation: @trace_agent
+
+    Decorator to trace the agent invocation, add agent input and output to the monitor.
+    """
+
+    @functools.wraps(func)
+    def wrapper_sync(*args, **kwargs):
+        # get agent input from arguments
+        agent_input = _get_agent_input(func, *args, **kwargs)
+        # check whether the tracing switch is enabled
+        source = func.__qualname__
+        self = agent_input.pop('self', None)
+
+        tracing = None
+        if isinstance(self, object):
+            agent_model = getattr(self, 'agent_model', None)
+            if isinstance(agent_model, object):
+                info = getattr(agent_model, 'info', None)
+                profile = getattr(agent_model, 'profile', None)
+                if isinstance(info, dict):
+                    source = info.get('name', None)
+                if isinstance(profile, dict):
+                    tracing = profile.get('tracing', None)
+
+        if tracing is False:
+            return func(*args, **kwargs)
+
+        # invoke function
+        result = func(*args, **kwargs)
+        # add agent invocation info to monitor
+        Monitor().trace_agent_invocation(source=source, agent_input=agent_input, agent_output=result)
+        return result
+
+    # sync function
+    return wrapper_sync
+
+
+def _get_agent_input(func, *args, **kwargs) -> dict:
+    """Get the agent input from arguments."""
+    sig = inspect.signature(func)
+    bound_args = sig.bind(*args, **kwargs)
+    bound_args.apply_defaults()
+    return {k: v for k, v in bound_args.arguments.items()}
diff --git a/agentuniverse/base/component/component_manager_base.py b/agentuniverse/base/component/component_manager_base.py
index 465e492d..f3ba0efb 100644
--- a/agentuniverse/base/component/component_manager_base.py
+++ b/agentuniverse/base/component/component_manager_base.py
@@ -38,7 +38,7 @@ def unregister(self, component_instance_name: str):
         self._instance_obj_map.pop(component_instance_name)
 
     def get_instance_obj(self, component_instance_name: str,
-                         appname: str = None, new_instance: bool = None) -> ComponentTypeVar:
+                         appname: str = None, new_instance: bool = False) -> ComponentTypeVar:
         """Return the component instance object."""
         appname = appname or ApplicationConfigManager().app_configer.base_info_appname
         instance_code = f'{appname}.{self._component_type.value.lower()}.{component_instance_name}'
diff --git a/agentuniverse/base/util/monitor/monitor.py b/agentuniverse/base/util/monitor/monitor.py
index 7b4e942e..3980583b 100644
--- a/agentuniverse/base/util/monitor/monitor.py
+++ b/agentuniverse/base/util/monitor/monitor.py
@@ -12,10 +12,13 @@
 
 from pydantic import BaseModel
 
+from agentuniverse.agent.input_object import InputObject
+from agentuniverse.agent.output_object import OutputObject
 from agentuniverse.base.annotation.singleton import singleton
 from agentuniverse.base.config.configer import Configer
 
 LLM_INVOCATION_SUBDIR = "llm_invocation"
+AGENT_INVOCATION_SUBDIR = "agent_invocation"
 
 
 @singleton
@@ -54,11 +57,81 @@ def trace_llm_invocation(self, source: str, llm_input: Union[str, dict], llm_out
 
             # write to jsonl
             with jsonlines.open(path_save, 'a') as writer:
-                json_record = json.dumps(llm_invocation, ensure_ascii=False)
-                writer.write(json_record)
+                writer.write(llm_invocation)
+
+    def trace_agent_invocation(self, source: str, agent_input: Union[str, dict],
+                               agent_output: Union[str, dict]) -> None:
+        """Trace the agent invocation and save it to the monitor jsonl file."""
+        if self.activate:
+            try:
+                import jsonlines
+            except ImportError:
+                raise ImportError(
+                    "jsonlines is required to trace llm invocation: `pip install jsonlines`"
+                )
+            # get the current time
+            date = datetime.datetime.now()
+            agent_invocation = {
+                "source": source,
+                "date": date.strftime("%Y-%m-%d %H:%M:%S"),
+                "agent_input": self.serialize_obj(agent_input),
+                "agent_output": self.serialize_obj(agent_output),
+            }
+            # files are stored in hours
+            filename = f"agent_{source}_{date.strftime('%Y-%m-%d-%H')}.jsonl"
+            # file path to save
+            path_save = os.path.join(str(self._get_or_create_subdir(AGENT_INVOCATION_SUBDIR)), filename)
+
+            # write to jsonl
+            with jsonlines.open(path_save, 'a') as writer:
+                writer.write(agent_invocation)
 
     def _get_or_create_subdir(self, subdir: str) -> str:
         """Get or create a subdirectory if it doesn't exist in the monitor directory."""
         path = os.path.join(self.dir, subdir)
         os.makedirs(path, exist_ok=True)
         return path
+
+    @staticmethod
+    def default_serializer(obj):
+        """Default serializer for objects."""
+        if isinstance(obj, InputObject):
+            return obj.to_dict()
+        elif isinstance(obj, OutputObject):
+            return obj.to_dict()
+        elif isinstance(obj, BaseModel):
+            try:
+                return obj.dict()
+            except TypeError:
+                raise TypeError(f"Object of type {type(obj).__name__} is not JSON serializable")
+        else:
+            raise TypeError(f"Object of type {type(obj).__name__} is not JSON serializable")
+
+    def serialize_obj(self, obj):
+        """Serialize an object and filter out non-serializable values."""
+        filtered_obj = self.filter_and_serialize(obj)
+        return json.loads(json.dumps(filtered_obj, default=self.default_serializer))
+
+    def filter_and_serialize(self, obj):
+        """Recursively filter out non-serializable values from an object."""
+
+        def is_json_serializable(value):
+            """Check if value is a JSON serializable object."""
+            try:
+                json.dumps(value, default=self.default_serializer)
+                return True
+            except (TypeError, OverflowError):
+                return False
+
+        def filter_dict(d):
+            return {k: v for k, v in d.items() if is_json_serializable(v)}
+
+        def recursive_filter(o):
+            if isinstance(o, dict):
+                return filter_dict({k: recursive_filter(v) for k, v in o.items()})
+            elif isinstance(o, list):
+                return [recursive_filter(i) for i in o if is_json_serializable(i)]
+            else:
+                return o
+
+        return recursive_filter(obj)
diff --git a/agentuniverse/llm/default/deep_seek_openai_style_llm.py b/agentuniverse/llm/default/deep_seek_openai_style_llm.py
new file mode 100644
index 00000000..485ec685
--- /dev/null
+++ b/agentuniverse/llm/default/deep_seek_openai_style_llm.py
@@ -0,0 +1,70 @@
+# !/usr/bin/env python3
+# -*- coding:utf-8 -*-
+
+# @Time    : 2024/5/21 17:49
+# @Author  : weizjajj 
+# @Email   : weizhongjie.wzj@antgroup.com
+# @FileName: claude_llm.py
+
+from typing import Optional, Any, Union, Iterator, AsyncIterator
+
+from pydantic import Field
+
+from agentuniverse.base.annotation.trace import trace_llm
+from agentuniverse.base.util.env_util import get_from_env
+from agentuniverse.llm.llm_output import LLMOutput
+from agentuniverse.llm.openai_style_llm import OpenAIStyleLLM
+
+DEEpSEEkMAXCONTETNLENGTH = {
+    "deepseek-chat": 32000,
+    "deepseek-coder": 32000,
+    "claude-3-haiku-20240307": 200000,
+    "claude-2.1": 200000,
+    "claude-2.0": 100000,
+    "claude-instant-1.2": 100000
+}
+
+
+class DefaultDeepSeekLLM(OpenAIStyleLLM):
+    """The agentUniverse default openai llm module.
+
+    LLM parameters, such as name/description/model_name/max_tokens,
+    are injected into this class by the default_openai_llm.yaml configuration.
+    """
+
+    api_key: Optional[str] = Field(default_factory=lambda: get_from_env("DEEPSEEK_API_KEY"))
+    organization: Optional[str] = Field(default_factory=lambda: get_from_env("DEEPSEEK_ORGANIZATION"))
+    api_base: Optional[str] = Field(default_factory=lambda: get_from_env("DEEPSEEK_API_BASE"))
+    proxy: Optional[str] = Field(default_factory=lambda: get_from_env("DEEPSEEK_PROXY"))
+
+    @trace_llm
+    def call(self, messages: list, **kwargs: Any) -> Union[LLMOutput, Iterator[LLMOutput]]:
+        """ The call method of the LLM.
+
+        Users can customize how the model interacts by overriding call method of the LLM class.
+
+        Args:
+            messages (list): The messages to send to the LLM.
+            **kwargs: Arbitrary keyword arguments.
+        """
+        return super().call(messages, **kwargs)
+
+    @trace_llm
+    async def acall(self, messages: list, **kwargs: Any) -> Union[LLMOutput, AsyncIterator[LLMOutput]]:
+        """ The async call method of the LLM.
+
+        Users can customize how the model interacts by overriding acall method of the LLM class.
+
+        Args:
+            messages (list): The messages to send to the LLM.
+            **kwargs: Arbitrary keyword arguments.
+        """
+        return await super().acall(messages, **kwargs)
+
+    def max_context_length(self) -> int:
+        """Max context length.
+
+          The total length of input tokens and generated tokens is limited by the openai model's context length.
+          """
+        return DEEpSEEkMAXCONTETNLENGTH.get(self.model_name, 4096)
+
diff --git a/agentuniverse/llm/default/deep_seek_openai_style_llm.yaml b/agentuniverse/llm/default/deep_seek_openai_style_llm.yaml
new file mode 100644
index 00000000..3921577a
--- /dev/null
+++ b/agentuniverse/llm/default/deep_seek_openai_style_llm.yaml
@@ -0,0 +1,8 @@
+name: 'default_deepseek_llm'
+description: 'default default_deepseek_llm llm with spi'
+model_name: 'deepseek-chat'
+max_tokens: 1000
+metadata:
+  type: 'LLM'
+  module: 'agentuniverse.llm.default.deep_seek_openai_style_llm'
+  class: 'DefaultDeepSeekLLM'
\ No newline at end of file
diff --git a/agentuniverse/llm/llm.py b/agentuniverse/llm/llm.py
index 53c4fd67..b295132d 100644
--- a/agentuniverse/llm/llm.py
+++ b/agentuniverse/llm/llm.py
@@ -103,24 +103,29 @@ def initialize_by_component_configer(self, component_configer: LLMConfiger) -> '
         if component_configer.ext_info:
             self.ext_info = component_configer.ext_info
         self.tracing = component_configer.tracing
+        if 'max_context_length' in component_configer.configer.value:
+            self._max_context_length = component_configer.configer.value['max_context_length']
         return self
 
-    def set_by_agent_model(self, **kwargs) -> None:
+    def set_by_agent_model(self, **kwargs):
         """ Assign values of parameters to the LLM model in the agent configuration."""
+        # note: default shallow copy
+        copied_obj = self.model_copy()
         if 'model_name' in kwargs and kwargs['model_name']:
-            self.model_name = kwargs['model_name']
+            copied_obj.model_name = kwargs['model_name']
         if 'temperature' in kwargs and kwargs['temperature']:
-            self.temperature = kwargs['temperature']
+            copied_obj.temperature = kwargs['temperature']
         if 'request_timeout' in kwargs and kwargs['request_timeout']:
-            self.request_timeout = kwargs['request_timeout']
+            copied_obj.request_timeout = kwargs['request_timeout']
         if 'max_tokens' in kwargs and kwargs['max_tokens']:
-            self.max_tokens = kwargs['max_tokens']
+            copied_obj.max_tokens = kwargs['max_tokens']
         if 'max_retries' in kwargs and kwargs['max_retries']:
-            self.max_retries = kwargs['max_retries']
+            copied_obj.max_retries = kwargs['max_retries']
         if 'streaming' in kwargs and kwargs['streaming']:
-            self.streaming = kwargs['streaming']
+            copied_obj.streaming = kwargs['streaming']
         if 'max_context_length' in kwargs and kwargs['max_context_length']:
-            self._max_context_length = kwargs['max_context_length']
+            copied_obj._max_context_length = kwargs['max_context_length']
+        return copied_obj
 
     def max_context_length(self) -> int:
         """Max context length.
diff --git a/agentuniverse/llm/openai_llm.py b/agentuniverse/llm/openai_llm.py
index 1839b036..77a7a851 100644
--- a/agentuniverse/llm/openai_llm.py
+++ b/agentuniverse/llm/openai_llm.py
@@ -93,8 +93,7 @@ def call(self, messages: list, **kwargs: Any) -> Union[LLMOutput, Iterator[LLMOu
             **kwargs: Arbitrary keyword arguments.
         """
         streaming = kwargs.pop("streaming") if "streaming" in kwargs else self.streaming
-        if self.client is None:
-            self.client = self._new_client()
+        self.client = self._new_client()
         chat_completion = self.client.chat.completions.create(
             messages=messages,
             model=kwargs.pop('model', self.model_name),
@@ -116,8 +115,7 @@ async def acall(self, messages: list, **kwargs: Any) -> Union[LLMOutput, AsyncIt
             **kwargs: Arbitrary keyword arguments.
         """
         streaming = kwargs.pop("streaming") if "streaming" in kwargs else self.streaming
-        if self.async_client is None:
-            self.async_client = self._new_async_client()
+        self.async_client = self._new_async_client()
         chat_completion = await self.async_client.chat.completions.create(
             messages=messages,
             model=kwargs.pop('model', self.model_name),
@@ -135,17 +133,18 @@ def as_langchain(self) -> BaseLanguageModel:
         """Convert the agentUniverse(aU) openai llm class to the langchain openai llm class."""
         return LangchainOpenAI(self)
 
-    def set_by_agent_model(self, **kwargs) -> None:
+    def set_by_agent_model(self, **kwargs):
         """ Assign values of parameters to the OpenAILLM model in the agent configuration."""
-        super().set_by_agent_model(**kwargs)
+        copied_obj = super().set_by_agent_model(**kwargs)
         if 'openai_api_key' in kwargs and kwargs['openai_api_key']:
-            self.openai_api_key = kwargs['openai_api_key']
+            copied_obj.openai_api_key = kwargs['openai_api_key']
         if 'openai_api_base' in kwargs and kwargs['openai_api_base']:
-            self.openai_api_base = kwargs['openai_api_base']
+            copied_obj.openai_api_base = kwargs['openai_api_base']
         if 'openai_proxy' in kwargs and kwargs['openai_proxy']:
-            self.openai_proxy = kwargs['openai_proxy']
+            copied_obj.openai_proxy = kwargs['openai_proxy']
         if 'openai_client_args' in kwargs and kwargs['openai_client_args']:
-            self.openai_client_args = kwargs['openai_client_args']
+            copied_obj.openai_client_args = kwargs['openai_client_args']
+        return copied_obj
 
     def max_context_length(self) -> int:
         """Max context length.
diff --git a/agentuniverse/llm/openai_style_llm.py b/agentuniverse/llm/openai_style_llm.py
index 2d5a3ea0..bc7deb2d 100644
--- a/agentuniverse/llm/openai_style_llm.py
+++ b/agentuniverse/llm/openai_style_llm.py
@@ -14,6 +14,8 @@
 from langchain_core.language_models.base import BaseLanguageModel
 from openai import OpenAI, AsyncOpenAI
 
+from agentuniverse.base.config.component_configer.configers.llm_configer import LLMConfiger
+from agentuniverse.base.util.env_util import get_from_env
 from agentuniverse.llm.llm import LLM, LLMOutput
 from agentuniverse.llm.openai_style_langchain_instance import LangchainOpenAIStyleInstance
 
@@ -47,7 +49,7 @@ def _new_client(self):
             base_url=self.api_base,
             timeout=self.request_timeout,
             max_retries=self.max_retries,
-            http_client=httpx.Client(proxy=self.openai_proxy) if self.proxy else None,
+            http_client=httpx.Client(proxy=self.proxy) if self.proxy else None,
             **(self.client_args or {}),
         )
 
@@ -119,15 +121,17 @@ def as_langchain(self) -> BaseLanguageModel:
 
     def set_by_agent_model(self, **kwargs) -> None:
         """ Assign values of parameters to the OpenAILLM model in the agent configuration."""
-        super().set_by_agent_model(**kwargs)
+        copied_obj = super().set_by_agent_model(**kwargs)
         if 'api_key' in kwargs and kwargs['api_key']:
-            self.api_key = kwargs['api_key']
+            copied_obj.api_key = kwargs['api_key']
         if 'api_base' in kwargs and kwargs['api_base']:
-            self.api_base = kwargs['api_base']
+            copied_obj.api_base = kwargs['api_base']
         if 'proxy' in kwargs and kwargs['proxy']:
-            self.proxy = kwargs['proxy']
+            copied_obj.proxy = kwargs['proxy']
         if 'client_args' in kwargs and kwargs['client_args']:
-            self.client_args = kwargs['client_args']
+            copied_obj.client_args = kwargs['client_args']
+        return copied_obj
+
 
     @staticmethod
     def parse_result(chunk):
@@ -161,6 +165,17 @@ async def agenerate_stream_result(self, stream: AsyncIterator) -> AsyncIterator[
 
         await self.aclose()
 
+    def initialize_by_component_configer(self, component_configer: LLMConfiger) -> 'LLM':
+        if 'api_base' in component_configer.configer.value:
+            self.api_base = component_configer.configer.value.get('api_base')
+        elif 'api_base_env' in component_configer.configer.value:
+            self.api_base = get_from_env(component_configer.configer.value.get('api_base_env'))
+        if 'api_key' in component_configer .configer.value:
+            self.api_key = component_configer.configer.value.get('api_key')
+        elif 'api_key_env' in component_configer.configer.value:
+            self.api_key = get_from_env(component_configer.configer.value.get('api_key_env'))
+        return super().initialize_by_component_configer(component_configer)
+
     def get_num_tokens(self, text: str) -> int:
         """Get the number of tokens present in the text.
 
@@ -187,3 +202,8 @@ async def aclose(self):
         """Async close the client."""
         if hasattr(self, 'async_client') and self.async_client:
             await self.async_client.close()
+
+    def max_context_length(self) -> int:
+        """Return the maximum length of the context."""
+        if super().max_context_length():
+            return super().max_context_length()
diff --git a/dataset/README.md b/dataset/README.md
new file mode 100644
index 00000000..7c292a27
--- /dev/null
+++ b/dataset/README.md
@@ -0,0 +1,17 @@
+# Data Description
+****************************************
+## PEER Financial Training Dataset
+We open source 100 common financial questions and a training dataset for use within the PEER framework, containing 100 sets of inputs and outputs of the Planning Agent and the Expressing Agent. The dataset is applicable to agent training, pre-training, and supervised fine-tuning in various financial analysis scenarios. 
+
+For more training data, please provide your email via [GitHub Issues](https://github.com/alipay/agentUniverse/issues), we typically respond within 2 days.
+
+Due to compliance issues, the relevant data of the Executing agent is still in the approval process, please wait patiently.
+
+### 🌟 FinQA
+We have collected 100 professional questions from our business scenarios and categorized them into nine distinct categories, including information query, general financial QA, report interpretation, target analysis, strategy advice, major events interpretation, macro analysis, market analysis, policy interpretation. 
+
+### 🌟 planning agent data
+Each set of data contains the input and output of the Planning Agent. The input is the original query proposed by the user. The output is the sub-questions generated by the agent, serving as the interpretation framework.
+
+### 🌟 expressing agent data
+Each set of data contains the input and output of the Expressing Agent. The input is the answer to each qub-question given by the Executing Agent through collecting information. The output is the professional answer after synthesis and rewriting.
\ No newline at end of file
diff --git a/dataset/peer_financial_training_dataset/v20240704/FinQA.jsonl b/dataset/peer_financial_training_dataset/v20240704/FinQA.jsonl
new file mode 100644
index 00000000..117e84bc
--- /dev/null
+++ b/dataset/peer_financial_training_dataset/v20240704/FinQA.jsonl
@@ -0,0 +1,100 @@
+{"text": "Please analyze the recent performance of Xinyetech, Lexin, and 360 DigiTech, and compare the differences among the three companies."}
+{"text": "How have the style stocks of the major indices performed in the past month?"}
+{"text": "Please interpret the latest domestic Manufacturing PMI data."}
+{"text": "How has the semiconductor sector been performing recently?"}
+{"text": "What are the latest sales figures for Xiaomi smartphones? Is Xiaomi worth investing in?"}
+{"text": "From the perspective of the investment clock, what is the current position of China's economy? What types of assets are suitable for allocation?"}
+{"text": "What are the hot events in the electronics industry in the past week? How do they impact investments in the corresponding A-share sectors?"}
+{"text": "Will U.S. bond yields remain high? Please provide a detailed analysis."}
+{"text": "What factors influence foreign capital inflows?"}
+{"text": "What impact will anti-corruption policies in the pharmaceutical industry have in the short and long term?"}
+{"text": "How will Meituan and Ctrip benefit from the increase in domestic tourism demand this year?"}
+{"text": "What are the views of mainstream domestic and foreign brokerages on A-shares in 2024? What are the potential opportunities and risks for next year?"}
+{"text": "What aspects can be considered to predict future price movements when investing in gold?"}
+{"text": "What is expansionary fiscal policy?"}
+{"text": "How is the pharmaceutical sector performing recently?"}
+{"text": "How should young people plan for retirement?"}
+{"text": "What impact will the issuance of one trillion yuan in special government bonds in the fourth quarter have on China's local government debt resolution?"}
+{"text": "How is the latest quarterly financial report of Apple Inc. generally evaluated by the industry?"}
+{"text": "How should we interpret the latest market analysis report by Li Qiang, a researcher at China International Capital Corporation?"}
+{"text": "What are the key development highlights in the economic growth report released by the National Development and Reform Commission in the fourth quarter of 2023?"}
+{"text": "How should we analyze the latest quarterly report released by Amazon?"}
+{"text": "Please provide an analysis and summary of the key points of ByteDance's latest quarterly financial report."}
+{"text": "What impact does Tesla's stock price fluctuation have on the electric vehicle sector?"}
+{"text": "Please analyze the recent innovation trends of Amazon, Google, and Apple, and conduct a comparative study on their strategies and achievements in technology development and R\\&D investment."}
+{"text": "Is investing in Apple Inc. a reasonable decision in the current economic environment?"}
+{"text": "Which sector has greater growth potential in the current market environment, the renewable energy industry or the biotechnology industry?"}
+{"text": "Essential and service consumption, such as food and medical care, should not drive the industrial chain, especially industrial manufacturing, as much as real estate. How do you view the impact of this consumption structure change on major manufacturing countries?"}
+{"text": "How do you view the competitiveness of CATL's power battery technology in the current market?"}
+{"text": "Regarding China Universal Asset Management Co., Ltd., which equity funds currently show significant excess returns compared to market performance?"}
+{"text": "Between consumer industry stocks and healthcare industry stocks, which sector's current market conditions are more favorable for long-term investment growth?"}
+{"text": "If you invest one million yuan in a mixed portfolio of stocks and bonds, will this strategy help achieve personal long-term financial security goals?"}
+{"text": "During periods of market volatility, what investment strategies can help investors protect their capital and achieve growth?"}
+{"text": "When formulating investment strategies, which industries require the most detailed market analysis?"}
+{"text": "Can the adoption of a diversified asset allocation strategy effectively improve the risk-adjusted returns of an investment portfolio?"}
+{"text": "I plan to save for retirement and can currently invest three hundred thousand yuan regularly. What investment strategies can you recommend to ensure an annual growth rate of at least 6\\%?"}
+{"text": "What core indicators or factors should be considered when formulating investment strategies to evaluate the performance of potential asset portfolios?"}
+{"text": "How to develop a sound financial plan to achieve long-term capital appreciation and risk control?"}
+{"text": "Under what market conditions can a diversified investment portfolio strategy improve investment returns?"}
+{"text": "Considering the economic data since 2024, which fields show high profitability and are suitable for strategic long-term investment analysis?"}
+{"text": "What are the core principles of long-term investment strategies?"}
+{"text": "As a strategy consultant dedicated to achieving long-term financial growth, how should we adjust our investment portfolio to optimize risk management in the face of changing market trends?"}
+{"text": "What recent monetary policy adjustments have been made by the central bank?"}
+{"text": "In April 2024, which industries did the government invest in? How can we analyze the impact of government investment on industries?"}
+{"text": "What impact has the current economic environment had on the global banking industry, and are major banking institutions facing severe financial challenges?"}
+{"text": "What important decisions or statements regarding climate change and sustainable energy policies were made at the recent G20 summit?"}
+{"text": "Why does the central bank implement interest rate cuts? Can such measures effectively stimulate economic growth and prevent a recession?"}
+{"text": "Is it a suitable decision to invest in Microsoft at present?"}
+{"text": "What major tax adjustment measures have the government recently announced, and what are the possible long-term impacts on corporate investment and the market economy?"}
+{"text": "In the latest fintech field, which companies are investing in artificial intelligence technology development? What are some notable AI innovation examples?"}
+{"text": "What are the basic principles of monetary policy? What are the differences and connections with modern monetary theory?"}
+{"text": "What are the core differences between Alipay's Yu'ebao and WeChat's Licaitong in terms of investment returns and asset management functions?"}
+{"text": "How does the capital adequacy ratio level of the Bank of China reflect its overall financial health?"}
+{"text": "What is the impact of expansionary monetary policy on capital markets?"}
+{"text": "What are the macroeconomic forecasts for global economic growth in 2024, and which key economic indicators and policy decisions will influence this growth trend?"}
+{"text": "According to macroeconomic cycle theory, what stage of the cycle is the global economy currently in? How should central banks adjust their monetary policy for this stage?"}
+{"text": "Investigate the trend of GDP growth rate throughout 2023."}
+{"text": "Please analyze the recently released domestic Manufacturing PMI data, highlighting key economic trends and potential influencing factors."}
+{"text": "Please analyze the main features of the latest employment report regarding the unemployment rate and job growth, and their potential impact on the economy."}
+{"text": "How to assess the prospects for global economic growth in 2024 and its impact on international markets?"}
+{"text": "Recent fluctuations in international oil prices have been significant. Please analyze the reasons behind this trend."}
+{"text": "How to assess the stability of the global supply chain in 2024 and its potential impact on international trade?"}
+{"text": "Analyze the historical patterns of global crude oil price fluctuations and predict their potential impact on the energy stock market under different geopolitical scenarios in the future."}
+{"text": "After the government implements expansionary monetary policy, what changes might occur in overall economic growth and the job market?"}
+{"text": "What is the forecast for China's GDP growth rate this year?"}
+{"text": "What are the views of mainstream domestic and foreign brokerages on the opportunities and risks of domestic bonds in 2024?"}
+{"text": "What are the views of mainstream domestic and foreign brokerages on the opportunities and risks of A-shares in 2024?"}
+{"text": "What are the views of mainstream domestic and foreign brokerages on the opportunities and risks of gold in 2024?"}
+{"text": "What are the views of mainstream domestic and foreign brokerages on the opportunities and risks of U.S. stocks in 2024?"}
+{"text": "What are the views of mainstream domestic and foreign brokerages on the opportunities and risks of Hong Kong stocks in 2024?"}
+{"text": "How is the price-to-earnings ratio level distributed among the major sectors in the CSI All Share industry classification?"}
+{"text": "When analyzing market trends in 2023, what key factors led to the difference between early-year forecasts for global market conditions and actual performance?"}
+{"text": "Overview of financial analysts' analysis of global stock market trends in the past week."}
+{"text": "Which industry sectors performed the strongest in the past week? Please discuss their growth drivers and potential influencing factors."}
+{"text": "Have there been any significant events in the automotive manufacturing industry in the past week, and what are their potential impacts on the corresponding A-share sectors?"}
+{"text": "What major events have occurred in the fintech industry in the past week, and have they impacted relevant fintech stocks?"}
+{"text": "Analyze the market performance and stock trading trends of the consumer retail industry in April 2024."}
+{"text": "As of the close on May 7th, at what historical percentile is the valuation level of the CSI 300 Index?"}
+{"text": "Are there any new pharmaceutical company listings or stock issuance plans in May 2024?"}
+{"text": "What was the revenue growth rate of the healthcare industry in the fourth quarter of 2023?"}
+{"text": "What is the general earnings growth forecast by financial analysts for the banking sector in the first quarter of 2024?"}
+{"text": "On what date did Alibaba Group have its initial public offering (IPO) on the New York Stock Exchange?"}
+{"text": "How did Apple's revenue growth perform in the latest financial report?"}
+{"text": "When was the most recent constituent adjustment of the CSI 300 Index? Please list the specific stocks added and removed in this adjustment."}
+{"text": "Please list the main companies invested in by China Universal Medical and Health Industry Fund."}
+{"text": "What is the latest reported inflation rate for 2024?"}
+{"text": "What new regulations and measures to promote job market stability are mentioned in the recent policy interpretations by the State Council?"}
+{"text": "What measures or suggestions were proposed at the recent Central Economic Work Conference to address current economic challenges and future development goals?"}
+{"text": "What are the key points of the latest adjustments to current and future macroeconomic policies mentioned at the last two Central Economic Work Conferences?"}
+{"text": "How should we interpret the economic development strategy proposed by the National Development and Reform Commission?"}
+{"text": "What measures will fiscal policy take in 2024 to optimize local government debt structure?"}
+{"text": "Is the issuance of one trillion yuan in special government bonds at the end of the fourth quarter of 2023 China's version of QE?"}
+{"text": "What are the latest employment policies announced in China?"}
+{"text": "Please analyze the market impact of the government's fiscal spending policy in the fourth quarter of 2023."}
+{"text": "Why is the government issuing one trillion yuan in national bonds?"}
+{"text": "Please interpret the key policy contents of the latest Central Economic Work Conference."}
+{"text": "What policies directly related to improving people's livelihood were announced in April 2024?"}
+{"text": "What is the direction of China's economy in 2024, and what are the core concerns?"}
+{"text": "Reviewing 2023, what factors led to the disparity between early-year macroeconomic and asset expectations and actual performance?"}
+{"text": "What impact will Huawei AITO's new M7, breaking 60,000 orders, have on the market?"}
+{"text": "What are the expectations for the U.S. economy and Federal Reserve policy changes next year?"}
diff --git a/dataset/peer_financial_training_dataset/v20240704/expressing_agent_data.jsonl b/dataset/peer_financial_training_dataset/v20240704/expressing_agent_data.jsonl
new file mode 100644
index 00000000..847973d4
--- /dev/null
+++ b/dataset/peer_financial_training_dataset/v20240704/expressing_agent_data.jsonl
@@ -0,0 +1,10 @@
+{"type": "chatml", "messages": [{"role": "user", "content": "从现在开始，你的角色是：投研分析师\n职责：\n善于从不同角度、有条理的回答用户的问题。\n你需要仅仅使用提供的知识，专业、详细的回答用户的问题。今天的时间: 2024-04-06，星期6\n-------------------------------------------------------------\n我的问题是：蔡崇信的访谈提到了什么？\n-------------------------------------------------------------\n背景信息是：\n\n-------------------------------------------------------------\n仅仅可以使用下面的知识:\n蔡崇信的访谈提到了什么？\n在阿里巴巴董事长蔡崇信的专访中，他表达了对公司未来发展的信心，并将电商和云计算定位为阿里巴巴的核心业务。他预测，未来五年，中国电商的市场渗透率将上升至40%或更高，推动阿里电商业务的增长。同时，他也看好中国经济的数字化进程为云计算业务提供的需求，并表示阿里正在关注AI电商和行业竞争的发展。\n\n在芯片和半导体方面，蔡崇信指出，由于美国对Nvidia等公司向中国出口高端芯片的严格限制，阿里的云业务和高端计算服务能力受到了影响。他认为这是一个大问题，但也看到解决的可能性，他预见在短期至中期，这会是一个问题，但长远来看，中国将发展自己制造这些高端GPU的能力。在限制解除前，由于已有的库存，大型语言模型的训练仍可以继续进行。\n\n此外，蔡崇信还透露，阿里正在加大对AI相关技术的投资，并致力于提升用户购买频次和订单量。\n--------------------------\n蔡崇信最近的访谈内容\n问题：蔡崇信最近的访谈有哪些重要内容？\n\n回答：\n在最近的访谈中，阿里巴巴董事会主席蔡崇信分享了对公司现状和未来发展的看法。他承认阿里巴巴在过去几年中存在一些问题，并强调了新任CEO吴泳铭对于用户体验的重视。对于中国经济，他认为中国市场仍具有巨大潜力，尽管目前存在一些挑战，例如房地产市场低迷，年轻人就业前景不明朗等。\n\n在谈到阿里巴巴的云业务时，他表示因为美国对华出口管制的影响，中国企业在高端芯片的使用上受限，这对阿里巴巴的云业务以及向客户提供高端计算服务的能力产生了影响。但他提到，中国正在加快发展自主芯片的设计和制造能力。\n\n此外，他还分享了自己的成长经历和工作体验，以及对企业文化、工作效率、领导力以及工作与生活平衡的看法。他建议年轻人要掌握一两项特长，如编程、特定领域的专业知识等，从而在人群中脱颖而出。同时，他还推荐年轻人学习数据科学、心理学等前沿学科。\n--------------------------\n蔡崇信近期对蚂蚁集团的发展规划的访谈\n问题：蔡崇信近期对蚂蚁集团的发展规划有何看法？\n\n答案：蔡崇信在最近的访谈中提到，过去几年，蚂蚁集团在一度忽视用户体验上有所欠缺，为此已经进行了重组。新的首席执行官相较于蔡崇信年轻12岁，他非常注重用户，专注于产品、界面和用户体验。蔡崇信表示，这一改变对蚂蚁集团的发展至关重要。他认为公司需要承认错误，然后改变与战略相适应的组织结构，并将公司的方向融入组织结构中。通过这种方式，他期望蚂蚁集团能够更好地服务用户，从而提升其在竞争中的地位。\n--------------------------\n蔡崇信近期对科技行业的看法和预测的访谈\n蔡崇信在近期的访谈中表示，中国在 AI 技术领域与美国存在一定差距，可能落后两年。去年10月，美国对Nvidia等公司向中国出口高端芯片的能力施加了严格的限制，这对中国的云业务及提供高端计算服务的能力产生了影响。蔡崇信认为这是一个大问题，短期和中期都会产生影响，但他也表示，中国正在努力发展自制高端GPU芯片的能力。\n\n他认为，尽管在短期内，人们已经储备了一定的库存，能够保证大型语言模型的训练在未来一年或18个月内能够继续进行，但从长远来看，中国需要自主制造这些高端芯片。\n\n蔡崇信还强调，中国不会失去世界工厂的地位，墨西哥、越南等国家相比中国仍有较大差距。他建议年轻人努力成为自己领域的前 10% 的佼佼者，以获得尊重和社会认可。\n--------------------------\n蔡崇信近期对中国经济形势的分析的访谈\n蔡崇信，阿里巴巴董事会主席、联合创始人近期在访谈中对中国经济形势进行了深入分析，并对在美运营的中国企业提出警示，重视数据隐私和网络安全等合规事项。他认为，许多西方人对中国存在绝对化的误解，事实往往介于两个极端之间。他还强调了中国市场对全球经济繁荣的重要性。\n\n关于芯片和半导体方面的问题，他指出，去年10月美国对Nvidia等公司向中国每家公司出口高端芯片的能力施加了非常严格的限制。这对阿里巴巴的云业务以及向客户提供高端计算服务的能力造成了影响。他表示，芯片短缺是一个大问题，人们正在努力解决。他认为，在限制解除之前，人们已经储备了库存，所以在未来一年或18个月内，大型语言模型的训练仍然可以继续进行。\n\n蔡崇信表示，从长远来看，中国将发展自己制造这些高端GPU的能力。他强调，不能打赌中国会输，中国市场对世界经济繁荣至关重要。\n--------------------------\n蔡崇信近期对全球金融市场的观察的访谈\n问题：请分析和总结蔡崇信对全球金融市场、阿里巴巴的发展和未来方向的观察和看法。\n\n答案：\n蔡崇信在近期的访谈中分享了他对全球金融市场、以及阿里巴巴未来发展的观察和看法。\n\n对全球金融市场，蔡崇信关注了美国对Nvidia等公司向中国出口高端芯片的限制，认为这对阿里巴巴的云业务和提供高端计算服务的能力产生了影响。他预计在短期和中期，这将是一个问题，但长期来看，中国将发展自己制造高端GPU的能力。\n\n针对阿里巴巴自身的发展，蔡崇信表示阿里巴巴过去忽视了用户体验，因此在重组过程中引入了新的CEO吴泳铭，以更加聚焦于用户为中心的产品和界面开发。他强调了人工智能在阿里的云业务中的重要性，认为拥有一个内部开发的优秀大型语言模型对于阿里的云业务至关重要。\n\n对于未来的方向，蔡崇信强调了中国消费市场的潜力。他指出，中国的制造产量约占全球的31%，但消费仅占全球的14%，存在显著的不平衡。他预期中国消费者将会变得更加重要，并且对GDP的贡献率会持续增长。\n\n此外，蔡崇信还建议年轻人学习基本的专业技能，尤其是数据科学和心理学，认为这些是在生活中取得成功所需的所有工具。\n--------------------------\n\n-------------------------------------------------------------\n需要遵守的规则是：\n1. 不采用错误的信息。\n2. 不描述重复的信息。\n3. 不做对问题没有帮助的回答\n4. 简明扼要，重点突出，从不过多花哨词藻。\n5. 不在多处讲到同一个细节点，一个点只出现一次。\n6. 不说模糊的推测。\n7. 遵循背景信息中的要求。\n8. 尽量多的使用数值类信息。\n9. 不可以出现XXX、ABC等不明确的词语。\n仅仅使用提供的知识，一步一步来回答问题。"}, {"role": "assistant", "content": "在蔡崇信的最近一次访谈中，他分享了对阿里巴巴未来发展的信心和看法。主要内容包括：\n\n一、业务发展预测\n1. 他对电商和云计算的发展持乐观态度，认为这两项是阿里巴巴的核心业务。他预测，未来五年，中国电商市场的渗透率将上升至40%或更高，推动阿里电商业务的增长。\n2. 他看好中国经济的数字化进程，认为这将为阿里巴巴的云计算业务提供需求。\n3. 他透露阿里正在加大对AI相关技术的投资，并致力于提升用户购买频次和订单量。\n\n二、行业挑战\n1. 在芯片和半导体方面，蔡崇信指出，由于美国对Nvidia等公司向中国出口高端芯片的严格限制，阿里的云业务和高端计算服务能力受到了影响。\n2. 他认为这是一个大问题，但也看到解决方案，预测短期至中期，这会是一个问题；但长远看来，中国将发展自己制造这些高端GPU的能力。\n\n三、对蚂蚁集团的看法\n1. 他提到，蚂蚁集团在一度忽视用户体验上有所欠缺，为此已经进行了重组。新的首席执行官非常注重用户，专注于产品、界面和用户体验。\n2. 他认为这一改变对蚂蚁集团的发展至关重要，并希望通过这种方式，蚂蚁集团能够更好地服务用户，从而提升其在竞争中的地位。"}], "source": "self-made"}
+{"type": "chatml", "messages": [{"role": "user", "content": "从现在开始，你的角色是：投研分析师\n职责：\n善于从不同角度、有条理的回答用户的问题。\n你需要仅仅使用提供的知识，专业、详细的回答用户的问题。今天的时间: 2023-12-06，星期3\n-------------------------------------------------------------\n我的问题是：证券保险行业今年发生了啥？\n-------------------------------------------------------------\n背景信息是：\n\n-------------------------------------------------------------\n仅仅可以使用下面的知识:\n证券保险行业今年发生了啥？\n2023年，证券保险行业表现出长期向好的趋势，但也面临着转型调整的阵痛。上半年，保险公司原保险保费收入3.2万亿元，同比增长12.5%，其中人身险的原保险保费收入同比增长13.38%，显示了恢复性复苏的态势。然而，下半年可能会有调整。我国经济长期向好的基本面没有变化，因此保险行业尤其是寿险领域存在巨大增长空间。\n\n然而，人身保险发展正处于转型发展的阵痛期，面临业务增长持续承压、销售队伍转型升级、行业市场竞争加剧的多重压力。尽管伴随着社会复苏、需求回升，寿险市场慢慢回暖，但行业转型的战略窗口中存在诸多现实挑战。\n\n同时，风险也在增大。截至2023年第一季度，有6家保险公司处于风险处置过程中，8家保险公司被认为是准问题险企，已暂停披露偿付能力报告。这30家保险公司中有不少机构的资产规模在数千亿元，如果不能解决其偿付能力问题，可能会对投保人、投资者和市场产生较大的影响。\n\n政府一直在积极推动保险行业规范发展。2020年制定了《责任保险业务监管办法》，明确了责任保险的定义、保险公司的义务和保险服务的范围。2021年，国家金融监督管理总局通过了《保险集团公司监督管理办法》，旨在加强对保险集团公司的监督管理。2022年，国家金融监督管理总局在全国范围内开展了针对保险资金运用关联交易的专项检查，这是银保监会成立以来首次专门针对保险资金运用关联交易的专项检查，也是保险机构监管主体职责改革后首次大规模专项检查行动。整个行业都会持续向好发展。\n--------------------------\n2023年证券行业的重大事件\n2023年证券行业的重大事件主要包括以下几点：\n\n1. 4月，沪深交易所主板注册制首批企业上市，实现了股票发行注册制改革全面落地。同时，沪深港通交易日历优化上线实施，放开了两地市场全部共同交易日的沪深港通交易，极大地提升了交易效率。\n\n2. 5月，国家金融监督管理总局正式揭牌，标志着中国金融监管体系迈入“一行一局一会”新格局。\n\n3. 8月27日，A股政策密集落地，包括证监会阶段性收紧IPO节奏，要求上市公司募集资金应投向主营业务，严限多元化投资；财政部、税务总局公告交易印花税减半征收；证券交易所调降融资保证金比例，支持适度融资需求。\n\n4. 9月，国家金融监督管理总局发布《关于优化保险公司偿付能力监管标准的通知》，为增量险资入市进一步打开空间；同时，沪深交易所进一步规范股份减持行为。\n\n5. 10月11日，中央汇金同日增持四大行股份。\n\n6. 10月30日至31日，中央金融工作会议在北京举行，提出了推动股票发行注册制走深走实，发展多元化股权融资，大力提高上市公司质量，培育一流投资银行和投资机构等一系列资本市场改革发展的重点。\n\n此外，按照中原证券的研报，预计2023年全年肉鸡平均价格将同比上涨，这将推动养殖行业利润弹性逐步释放，相关上市公司的盈利水平将持续改善。中信证券的研报预计，2024年的公用事业行业盈利仍在扩张周期，有望在2024年跑赢市场。\n--------------------------\n2023年保险行业的重大事件\n2023年保险行业的重大事件主要体现在以下几个方面：\n\n1. 行业转型：保险机构开始进行市场细分，发掘消费者的个性化需求，向消费者提供差异化的保险产品及风险管理服务。同时，为消费者提供“好用不贵”的保险产品，也成为趋势。这可以理解为“找细分、要精准、要性价比”的转型过程。\n\n2. 行业挑战：我国人身保险发展正处于转型发展的阵痛期。面临业务增长持续承压、销售队伍转型升级、行业市场竞争加剧的多重压力。预定利率上限下调，导致阶段性承压。\n\n3. 保险公司风险：截至2023年第一季度，有6家保险公司处于风险处置过程中，8家保险公司被认为是准问题险企，已暂停披露偿付能力报告。此外，有13家保险公司的评级为C，3家评级为D，包括华夏人寿、恒大人寿、天安人寿等。若这些公司不能解决偿付能力问题，可能会对投保人、投资者和市场产生较大的影响。\n\n4. 监管加强：政府积极推动保险行业规范发展，通过了《责任保险业务监管办法》《保险集团公司监督管理办法》，并在全国范围内开展了针对保险资金运用关联交易的专项检查，这是银保监会成立以来首次专门针对保险资金运用关联交易的专项检查。行业准入门槛、偿付能力管理、业务监管，还是保险资金运用等方面，都只会越来越严格，越来越规范。\n--------------------------\n2023年证券行业的政策变动\n2023年，中国证监会发布了一系列政策，对证券行业进行了深度调整和改革。\n\n首先，证监会对全面实行注册制改革进行了深入学习和宣传，加快推进各条线制度规则的“立改废释”和体系优化，构建更加科学完备的资本市场法律体系。\n\n其次，证监会发布了券商风控指标意见稿，明确了监管方向从原来的鼓励全行业发展到扶优限劣、分类监管。这其中包括对连续3年分类评价AA级以上的券商，风险资本准备的系数可以调整为0.4，而D类则要调为2倍系数。这一政策不仅加快了行业优胜劣汰的速度，也为券商的资本使用效率提供了提升空间。\n\n再者，证监会对《证券公司风险控制指标计算标准规定》进行了修订，并向社会公开征求意见。其中包括，对券商的风险资本准备、表内外资产总额进行调整，分别给出不同的调整系数。同时，对券商在做市、资管、公募REITS等业务的计算标准进行了优化。\n\n最后，意见稿还加强了场外衍生品的监管力度，将股指期货、权益互换及卖出期权计算标准由20%调整至30%。\n\n总的来说，2023年证券行业的政策变动主要体现在全面实行注册制改革、对券商风控指标进行调整、优化风险控制指标计算标准以及加强场外衍生品的监管等方面。\n--------------------------\n2023年保险行业的政策变动\n2023年，中国保险行业的政策变动主要体现在以下几个方面：\n\n首先，财政部发布的《通知》将国有商业保险公司的经营效益类绩效评价指标“净资产收益率”的考核方式由“当年度指标”调整为“3年周期指标+当年度指标”的结合方式，以更好地引导保险公司追求长期稳健经营，防止盲目追求年度考核目标、忽视风险的短期行为。\n\n其次，《通知》将保险公司剩余期限10年期以上保单未来盈余计入核心资本的比例，从不超过35%提高至不超过40%，以鼓励保险公司发展长期保障型产品。\n\n同时，保险行业的发展也正面临一些挑战。例如，保险业投资收益及盈利水平面临增长压力，保险业投资端存量问题与新增风险并存，人身险行业转型仍处于攻坚克难阶段，财产险行业保险风险需持续关注。\n\n未来，保险行业的发展趋势主要包括金融科技进一步融入保险经营模式、行业分化效应将持续、保险行业整体业务结构持续优化。为此，专家建议保险资管公司应通过提升管理层内控和道德意识、健全完善内控系统、注重员工日常培训、建立内部监督体系等方式，加强内部控制建设，有效防范职业欺诈，提高运营效率和财务报表的可靠性，促进保险资管公司持续健康发展。\n--------------------------\n2023年证券保险行业的市场动态\n用户问题：请问2023年证券保险行业的市场动态是什么？\n\n回答：\n2023年，中国的经济形势有望由衰退转向弱复苏，这主要得益于各项政策的推出以及防疫政策的放松。然而，由于海外发达经济体衰退风险的增加以及国内地产恢复的缓慢，这种复苏态势可能会受到一些压力。\n\n在证券市场方面，随着国内经济触底反弹，A股的业绩增速有望实现同比上升。此外，预计海外发达经济体在2023年上半年停止加息，这将缓解人民币贬值压力，从而提高A股相对于海外市场的吸引力，并可能导致北向资金重新流入。因此，预计2023年国内证券市场将具备业绩和估值双重上升的基础。\n\n在保险行业方面，长期利率的复苏成为保险板块上涨的主要动力。预计负债端的拐点将在2023年第二季度出现，这表明我国经济的韧性强，潜力大，活力足，长期向好的基本面没有改变，人身险市场的长期空间仍然广阔。推荐的个股包括中国平安、中国太保和中国人寿。\n\n在投资机会方面，建议关注以下三个主线轮动：国产科技替代创新（如计算机、电子、通信、软件服务、数字经济等科创领域）；中国特色估值重塑主题（如能源、基建、房地产产业链等）；消费（如食品饮料、医药生物、酒店、旅游、交运、新能源消费等）。此外，半导体和人工智能等领域有望成为领导科技股再次走牛的主力军，具有走出史诗级行情的潜力。\n\n总的来说，2023年的证券和保险行业市场动态将主要受到经济复苏、长期利率复苏以及科技创新等因素的影响。\n--------------------------\n\n-------------------------------------------------------------\n需要遵守的规则是：\n1. 不采用错误的信息。\n2. 不描述重复的信息。\n3. 不做对问题没有帮助的回答\n4. 简明扼要，重点突出，从不过多花哨词藻。\n5. 不在多处讲到同一个细节点，一个点只出现一次。\n6. 不说模糊的推测。\n7. 遵循背景信息中的要求。\n8. 尽量多的使用数值类信息。\n9. 不可以出现XXX、ABC等不明确的词语。\n仅仅使用提供的知识，一步一步来回答问题。"}, {"role": "assistant", "content": "2023年，中国的证券保险行业发生了许多重大事件和政策变动，行业总体呈现出长期向好的趋势，但也面临一些挑战。\n\n在保险行业方面，上半年，保险公司的原保险保费收入达到3.2万亿元，同比增长12.5%，其中人身险的原保险保费收入同比增长13.38%，显示了恢复性复苏的态势。然而，人身保险发展正处于转型发展的阵痛期，面临业务增长承压、销售队伍转型升级、行业市场竞争加剧的多重压力。\n\n风险管理方面，到2023年第一季度，有6家保险公司处于风险处置过程中，8家保险公司被认为是准问题险企，已暂停披露偿付能力报告。这些公司的资产规模在数千亿元，如果不能解决偿付能力问题，可能会对投保人、投资者和市场产生较大影响。\n\n在政策方面，政府积极推动保险行业规范发展，发布了《责任保险业务监管办法》和《保险集团公司监督管理办法》，并在全国范围内开展了针对保险资金运用关联交易的专项检查。\n\n在证券行业方面，2023年的重大事件包括沪深交易所主板注册制首批企业上市，实现了股票发行注册制改革全面落地，以及沪深港通交易日历优化上线实施，放开了两地市场全部共同交易日的沪深港通交易。\n\n政策方面，证监会发布了券商风控指标意见稿，明确了监管方向从原来的鼓励全行业发展到扶优限劣、分类监管。同时，证监会对《证券公司风险控制指标计算标准规定》进行了修订，并向社会公开征求意见。\n\n市场动态方面，随着国内经济触底反弹，A股的业绩增速有望实现同比上升。同时，保险板块由于长期利率的复苏成为上涨的主要动力，预计负债端的拐点将在2023年第二季度出现。\n\n从以上信息可以看出，2023年的证券保险行业在政策、市场、转型和风险管理等方面发生了许多重要变化，整体呈现出向好发展的趋势，但也面临着一些挑战。"}], "source": "self-made"}
+{"type": "chatml", "messages": [{"role": "user", "content": "从现在开始，你的角色是：投研分析师\n职责：\n善于从不同角度、有条理的回答用户的问题。\n你需要仅仅使用提供的知识，专业、详细的回答用户的问题。今天的时间: 2023-12-06，星期3\n-------------------------------------------------------------\n我的问题是：在A股上市的酒企广告效果如何？\n-------------------------------------------------------------\n背景信息是：\n\n-------------------------------------------------------------\n仅仅可以使用下面的知识:\n近期在A股上市的酒企广告效果评价\n在2023年的前三季度，A股市场上的20家白酒企业总营收达到了3111.62亿元，同比增长15.91%。其中，贵州茅台和五粮液以1032.68亿元和625.36亿元的营收占据市场主导地位，两者的营收合计占总营收的54.28%。在净利润方面，这20家企业合计1189.8亿元，同比增长18.92%，其中岩石股份和伊力特的净利润增速表现最为出色，分别实现153.63%和63.88%的增长。\n\n此外，这些公司的经营性现金流净额合计达到1042.05亿元，同比大幅增加601.52亿元，其中贵州茅台和五粮液的现金流净额分别为500.02亿元和223.89亿元，显示出较强的造血能力。\n\n虽然消费需求疲软、市场竞争激烈和库存积压为白酒行业带来了挑战，但是行业整体仍保持稳健的增长态势。20家上市白酒企业的存货总额为1363.54亿元，同比增长12.63%。合同负债总额为406.67亿元，同比减少了1.91%，显示出市场对于酒类未来消费的看法偏保守与谨慎。然而，考虑到第四季度是传统的白酒消费季，市场对于名酒的业绩依然抱有乐观态度。\n\n在广告效果方面，在Q2的业绩公布中，迎驾贡酒实现了60%的高增速，成为了一大亮点。同时，皇台摘帽，剑南春等其它名酒可能借壳ST西发。这些都显示出广告对于酒企业绩的积极影响。\n\n综上所述，近期在A股上市的酒企的广告效果总体上是积极的，这些企业在市场竞争中表现出较强的实力和稳健的增长态势。\n--------------------------\n近期在A股上市的酒企广告投放情况\n近期，A股上市的酒企的广告投放情况表现积极。以贵州茅台和五粮液为例，他们联手瑞幸咖啡推出的“酱香拿铁”成功吸引了消费者的关注，引发了市场的热议，并在短期内推动了白酒板块的整体涨幅达到4.44%。另一方面，根据2023年三季度的财报，20家白酒上市公司实现总营收3111.62亿元，同比增长15.91%，归母净利润合计1189.8亿元，同比增长18.92%，显示出白酒行业整体的稳步增长。其中，贵州茅台和五粮液两大龙头的营收合计占行业比达54.28%，显示出他们在行业中的领导地位。但是，面临库存积压和市场竞争激烈的挑战，白酒行业仍需面临许多挑战。\n--------------------------\n近期在A股上市的酒企广告对销售的影响\n近期在A股上市的酒企广告对销售的影响可以从以下几个方面来看：\n\n首先，广告投放有助于提升品牌知名度和影响力，从而推动销售。如迎驾贡酒，其2022年Q2业绩超预期，增速高达60%。在此期间，迎驾贡酒投入了大量的资金用于理财，累计收益达6564万元，占其最近一年净利润的6.86%。\n\n其次，现金流管理是酒企运营的重要方面，广告费用预算和现金流管理紧密相关。部分酒企在广告投放和扩产同时进行，需要有效管理现金流以保持运营正常。如贵州茅台和五粮液，虽有大量现金存于银行，但同时也在进行大规模的扩产，总投资金额超过370亿元。对于这些酒企来说，广告投放是提升销售的重要手段，但也需要考虑其对现金流的影响。\n\n最后，白酒行业竞争激烈，广告投放对于提升市场份额尤为重要。据行业分析师肖竹青预计，随着白酒行业进入深度结构性调整期，龙头企业将会拥有越来越大的市场份额，区域白酒企业会逐渐边缘化，未来白酒行业会迎来更激烈的内卷式竞争。在这种环境下，广告投放对于吸引消费者，提升市场份额显得至关重要。\n\n总的来说，广告投放是提升销售的重要工具，但酒企在进行广告投放时也需要兼顾现金流管理和行业竞争态势。\n--------------------------\n近期在A股上市的酒企广告的创新点\n近期在A股上市的酒企广告创新主要体现在跨界联名、营销预热、吸引消费者关注等方面。如瑞幸咖啡与贵州茅台联名推出的“酱香拿铁”，从包装曝光到营销预热，成功吸引了大量消费者关注，使得A股白酒板块整体收涨4.44%。此外，他们还利用“中国人的第一杯酱香拿铁”和“美酒加咖啡，就爱这一杯”等宣传语吸引消费者购买。\n\n同时，酒企也在积极探索新的销售模式和市场机会。据预测，受益于低基数、宴席需求回补、商务活动恢复、消费能力恢复，预计今年二季度营收增速或将继续回升。节假日有望接力催化需求释放，后续应密切关注端午、中秋等假期前后的销售情况。白酒销售渠道反馈行业整体回款进度正有序推进，主要酒企核心单品批发价基本保持平稳、库存相对良性。\n\n然而，值得注意的是，白酒板块的投资风险也不容忽视。白酒作为典型的可选消费品，与居民收入水平和经济活跃度紧密相关，如果经济短期遇到逆风，可能会阶段性造成行业库存提升或业绩增长受阻。因此，投资者需谨慎分析，避免盲目跟风。\n--------------------------\n\n-------------------------------------------------------------\n需要遵守的规则是：\n1. 不采用错误的信息。\n2. 不描述重复的信息。\n3. 不做对问题没有帮助的回答\n4. 简明扼要，重点突出，从不过多花哨词藻。\n5. 不在多处讲到同一个细节点，一个点只出现一次。\n6. 不说模糊的推测。\n7. 遵循背景信息中的要求。\n8. 尽量多的使用数值类信息。\n9. 不可以出现XXX、ABC等不明确的词语。\n仅仅使用提供的知识，一步一步来回答问题。"}, {"role": "assistant", "content": "从近期A股上市的酒企广告效果评价，广告投放情况，广告对销售的影响以及广告的创新点四个方面来看，广告效果总体上是积极的。\n\n首先，广告帮助提升了酒企的品牌知名度和影响力。比如迎驾贡酒在2022年Q2的业绩公布中，实现了60%的高增速，成为了一大亮点。这显示出广告对于酒企业绩的积极影响。\n\n其次，广告投放对销售有显著的推动作用。贵州茅台和五粮液联手瑞幸咖啡推出的“酱香拿铁”成功吸引了消费者的关注，并在短期内推动了白酒板块的整体涨幅达到4.44%。这进一步证实了广告在提升销售方面的重要作用。\n\n然而，虽然广告能带来销售上的提升，但酒企在进行广告投放时也需要兼顾现金流管理和行业竞争态势。例如，贵州茅台和五粮液虽有大量现金存于银行，但同时也在进行大规模的扩产，总投资金额超过370亿元。这显示出，广告投放是提升销售的重要手段，但也需要考虑其对现金流的影响。\n\n最后，酒企在广告方面的创新也取得了一定的效果。瑞幸咖啡与贵州茅台联名推出的“酱香拿铁”，从包装曝光到营销预热，成功吸引了大量消费者关注。\n\n综上所述，近期在A股上市的酒企通过广告投放在提升品牌知名度、增加销售额、管理现金流以及进行创新等方面取得了一定的成效。"}], "source": "self-made"}
+{"type": "chatml", "messages": [{"role": "user", "content": "从现在开始，你的角色是：投研分析师\n职责：\n善于从不同角度、有条理的回答用户的问题。\n你需要仅仅使用提供的知识，专业、详细的回答用户的问题。今天的时间: 2023-12-06，星期3\n-------------------------------------------------------------\n我的问题是：长期持有收益比银行还高吗？\n-------------------------------------------------------------\n背景信息是：\n\n-------------------------------------------------------------\n仅仅可以使用下面的知识:\n长期持有收益比银行还高吗？\n关于“长期持有收益比银行还高吗？”这个问题，从搜寻到的信息来看，长期持有基金的确有可能带来较高的收益。\n\n首先，统计数据显示，股票型基金的长期持有能大概率提升基金的收益，正收益比例上看，持有3-5年为最佳。虽然在3075只股票型基金中，翻倍的基金只有64只，占比2.08%，但长期持有可以提升收益的概率。\n\n其次，市场虽然会有周期性的波动，但最终会发生均值回归，即涨得过多或跌得过多的趋势最终都会回归到平均值。这就意味着，当市场处于50%分位数之下时，选择长期持有，便能大概率获得收益。\n\n此外，从2004年以来，普通股票型基金指数和偏股混合型基金指数的涨幅都超过了10倍，在近20年的时间里不断创出新高。即使在市场高位买入，只要有耐心等待一定时间，也有可能从亏损中反败为胜。\n\n最后，对于“回本就卖”的策略，虽然可以避免亏损，但可能会错失更大的收益机会。这是因为，离开市场后要重新进入可能需要面临更高的价格和风险，而长期持有则可以更好地面对市场的短期波动，增加赚钱的概率。\n\n总的来说，长期持有基金相比于银行存款，有可能带来更高的收益，但这需要投资者有足够的耐心和对市场趋势的理解。\n--------------------------\n长期持有股票的平均收益率是多少？\n根据搜索到的信息，股票的长期持有收益率是由投资者在一定的持有期内的全部股利收入和资本利得占投资本金的比重来表示的。这个比重可以通过以下公式计算：[现金股息+(股票卖出价-股票买入价)]/股票买入价×100%。这里的现金股息是指投资者持有股票期间的股息收入，股票卖出价和股票买入价的差价则代表了资本利得。因此，想要了解长期持有股票的平均收益率，你需要考虑到股息收入和股票的买卖价格的变化。\n--------------------------\n长期持有的定义和计算方法是什么？\n长期持有，是投资策略的一种，主要是指投资者选择获益率高或成长性高的股票后，进行长期持有，而不是频繁买卖。这种策略的主要思想是，不轻易抛出手中的股票，而是等待股票的长期增长带来投资收益。\n\n至于计算方法，长期持有并没有特定的计算公式。通常，投资者会根据股票的盈利能力、成长性以及市场前景等因素，决定是否将其作为长期持有的投资对象。\n--------------------------\n长期投资的风险和收益比较。\n长期投资具有一定的风险和收益。以下是根据信息整合得出的答案：\n\n风险方面：\n1. 股票投资：可能受到政治、经济、国家产业政策、技术发展等多种因素的影响，可能导致投资者利益受损。但可以通过股票投资种类的组合和投资期限的组合来降低风险。\n2. 债券投资：虽然受到的影响因素和股票投资相似，但影响程度通常较小，风险要小于股票投资。主要风险包括债券发行单位可能出现意外情况，以及银行利率变动带来的风险。\n3. 基金投资：风险和收益与基金类型有关。股票型基金的风险和收益预期通常高于债券型基金和货币市场基金。此外，基金投资还可能面临市场风险、基金运作风险、流动性风险等。\n\n收益方面：\n1. 股票投资：企业应对各种影响因素作详细的分析，选择收益较高、安全性好的股票投资。\n2. 债券投资：在进行债券投资时，应考虑购买明显高于银行储蓄存款利率的长期债券，以求收益最大化和风险最小化。\n3. 基金投资：投资人购买基金，既可能分享基金投资产生的收益，也可能承担基金投资带来的损失。\n\n综上，长期投资需充分考虑自身的风险承受能力，理性判断市场，对投资行为作出独立决策，并承担基金投资中出现的各类风险。\n--------------------------\n近期的金融市场环境对长期持有的影响。\n从搜索到的信息来看，近期的金融市场环境对长期持有的影响主要以以下几个方面进行解读：\n\n首先，如果拉长时间周期来看，长期持有的投资策略可能更有优势。过去20年间，我国累计通胀达63.01%，定期存款的累计收益率为90.82%，而偏股混合型基金指数累计收益率高达783.76%。这表明，尽管短期市场环境波动可能影响投资收益，但长期持有的投资策略，如权益投资，能够跑赢通胀并获取超额收益。\n\n其次，适当的资产配置也是提高长期投资收益的重要手段。根据招商银行的“TREE资产配置服务体系”，投资者应从自身的财富阶段和风险偏好出发，选择适合自己的投资产品，并定期进行资产配置的检视和再平衡，以保持资产组合的稳健性。\n\n此外，在市场环境变化时，长期持有的策略能够有效地减少市场波动对投资收益的影响，带来更为稳定的收益。例如，南方金添利三年持有期债基注重长期持有债券，以获取稳定的利息收入。\n\n最后，科技的应用也对长期持有的投资策略产生影响。招商银行全流程系统化、产品线上化，并积极研发市场宏观、微观层面的观测指标和定量模型，及时感知市场变化，为客户科学、高效地调整配置比例和方案，这对于长期持有的投资策略有着积极的推动作用。\n--------------------------\n\n-------------------------------------------------------------\n需要遵守的规则是：\n1. 不采用错误的信息。\n2. 不描述重复的信息。\n3. 不做对问题没有帮助的回答\n4. 简明扼要，重点突出，从不过多花哨词藻。\n5. 不在多处讲到同一个细节点，一个点只出现一次。\n6. 不说模糊的推测。\n7. 遵循背景信息中的要求。\n8. 尽量多的使用数值类信息。\n9. 不可以出现XXX、ABC等不明确的词语。\n仅仅使用提供的知识，一步一步来回答问题。"}, {"role": "assistant", "content": "关于你的问题\"长期持有收益比银行还高吗？\"\n\n首先，我们来定义一下“长期持有”。在投资领域中，“长期持有”是指投资者选择某种具有高收益率或者高成长性的投资品种，而不是频繁地买卖，而是选择长期持有，期待通过资产的长期增长来获得投资收益。\n\n关于长期持有可能带来的收益，统计数据显示，对于股票型基金来说，长期持有能大概率提升基金的收益，正收益比例上看，持有3-5年为最佳。虽然在3075只股票型基金中，翻倍的基金只有64只，占比2.08%，但长期持有可以提升收益的概率。\n\n而对于股票的长期持有收益率，它是由投资者在一定的持有期内的全部股利收入和资本利得占投资本金的比重来表示的。这个比重可以通过以下公式计算：[现金股息+(股票卖出价-股票买入价)]/股票买入价×100%。这里的现金股息是指投资者持有股票期间的股息收入，股票卖出价和股票买入价的差价则代表了资本利得。\n\n另外，我们也需要考虑到市场环境的影响。近期的金融市场环境，尽管短期市场环境波动可能影响投资收益，但长期持有的投资策略，如权益投资，能够跑赢通胀并获取超额收益。过去20年间，我国累计通胀达63.01%，定期存款的累计收益率为90.82%，而偏股混合型基金指数累计收益率高达783.76%。\n\n当然，长期投资也具有一定的风险。例如，股票投资可能受到政治、经济、国家产业政策、技术发展等多种因素的影响；债券投资的主要风险包括债券发行单位可能出现意外情况，以及银行利率变动带来的风险；基金投资的风险和收益与基金类型有关，股票型基金的风险和收益预期通常高于债券型基金和货币市场基金。\n\n所以，从长期来看，“长期持有”的收益比银行存款有可能高，但这需要投资者有足够的耐心和对市场趋势的理解，同时也需要承担一定的风险。"}], "source": "self-made"}
+{"type": "chatml", "messages": [{"role": "user", "content": "从现在开始，你的角色是：投研分析师\n职责：\n善于从不同角度、有条理的回答用户的问题。\n你需要仅仅使用提供的知识，专业、详细的回答用户的问题。今天的时间: 2024-01-03，星期3\n-------------------------------------------------------------\n我的问题是：云栖大会带来什么投资机会\n-------------------------------------------------------------\n背景信息是：\n\n    根据上述收集的信息，从两部分进行资本市场大事分析\n    第一部分：基于上述几个维度，基于能够获取到的客观信息，挑选其中2-3个重点维度进行展开论述，不需要所有方面都一一提及，同时内容上要避免重复，同时更加强调时效性，表达的内容简明扼要，语义连贯。\n    第二部分：总结陈述，这里需要提炼要点，做到重点突出。然后结合市场上各类机构和专家给出的观点看法进行汇总提炼，如果市场上提到了某类资产的投资机会或者风险，则提示一下潜在的机会和主要的风险点。\n    \n-------------------------------------------------------------\n仅仅可以使用下面的知识:\n云栖大会带来什么投资机会\n事件回顾：\n云栖大会是一场关于云计算和大数据的盛会，其主要内容包括数据化转型的深入推进，以及相关的投资机会。在大会上，马云强调了贵州在未来30年的投资价值。\n\n事件解读分析：\n云栖大会的核心内容是数据化转型和云计算的发展，这将为投资者带来新的机会。随着数据化转型的深入推进，将产生更多更有价值的数据，创造更加丰富的应用场景。通过实施“数据要素x”行动，有望进一步发挥数据要素乘数效应，推进数据要素在相关行业的广泛利用。\n\n市场影响分析：\n云栖大会带来的投资机会主要集中在制造板块、品牌消费和高股息策略三个主线。制造板块中，华利集团、申洲国际、台华新材、伟星股份、新澳股份、健盛集团等优质企业有望受益。品牌消费板块中，安踏体育、李宁、比音勒芬、报喜鸟、波司登、滔搏、富安娜等高景气品牌有望迎来结构性投资机会。高股息策略中，家纺、男装、制造和港股个股在当前市盈率较低，分红能力出色，具有较好的配置价值。此外，跟踪中证云计算与大数据主题指数的云计算ETF（516510）等产品也有望受益。\n--------------------------\n2024年云栖大会的主要议题和内容\n2024年云栖大会的主要议题和内容主要围绕人工智能（AI）的发展和应用，以及其带来的挑战和影响进行讨论。\n\n1. 事件回顾：\n2023年，AI技术在多个领域取得了显著的进步，包括语言模型、医疗诊断、教育、自动驾驶和金融等。其中，以ChatGPT为代表的高级语言模型在处理复杂的数据分析、深入的语言理解与生成，以及多模态交互方面表现出色。AI在医疗领域的应用，如AI辅助的诊断工具，已经得到了广泛应用。在教育领域，AI技术被用于开发个性化学习平台，提高学习效率和质量。\n\n2. 事件解读分析：\nAI技术的快速发展也带来了一系列挑战，包括数据隐私和安全问题、就业结构的变化、以及版权问题的争议。展望未来，AI技术的发展潜力巨大，但同时也需要对技术发展进行合理的规范和引导。政府、企业和科研机构需要共同努力，制定有效的政策和标准，以确保AI技术的健康发展。\n\n3. 市场影响分析：\nAI技术的发展对资本市场产生了深远影响。在医疗领域，AI技术的应用提高了诊断效率，为医疗行业带来了巨大的市场机遇。在教育领域，AI技术的应用推动了教育行业的创新和发展。同时，AI技术的发展也对劳动市场产生了影响，一些低技能工作可能会被机器人取代，这对劳动力市场的结构和就业形势产生了影响。此外，AI技术的发展也对版权法和知识产权法产生了挑战，引发了关于创作权和版权法律适用的广泛讨论。\n--------------------------\n云栖大会对互联网行业的影响\n事件回顾：\n云栖大会是阿里巴巴集团举办的科技行业大会，被视为行业的“路标”。2023年，互联网行业发生了许多重大变化，包括ChatGPT的出现引发了大语言模型、图像视频模型的爆发，阿里巴巴和京东的组织架构调整，以及拼多多市值超过阿里巴巴等。此外，华为、小米、魅族等手机厂商也开始进军造车行业。\n\n事件解读分析：\n云栖大会的影响力在互联网行业中不可忽视，它不仅是技术盛宴，也是行业通往未来的“路标”。2023年的互联网行业变化频繁，新兴挑战者和老牌巨头都在自我变革中寻找新的定位和商机。其中，AI的普及和大模型的爆发为行业带来了新的机遇和挑战。此外，电商巨头的组织架构调整和市值变动也反映了市场的竞争态势。\n\n市场影响分析：\n这些变化对资本市场产生了深远影响。例如，阿里巴巴和京东的组织架构调整可能会影响其股价和市值。拼多多市值超过阿里巴巴可能会引发投资者对电商行业的重新评估。此外，手机厂商进军造车行业可能会对汽车和科技行业的资本市场产生影响。总的来说，这些变化可能会对相关行业的投资者产生重大影响。\n--------------------------\n云栖大会后互联网行业的投资机会\n事件回顾：\n云栖大会后，互联网行业的投资机会引起了市场的广泛关注。中国的互联网行业发展迅猛，尤其是互联网金融和互联网+等领域。随着智能手机的普及和人工智能、物联网技术的发展，行业内部正在发生深刻的技术革新。\n\n事件解读分析：\n这些技术革新为互联网行业带来了新的投资机会。在美元流动性压力缓解的背景下，互联网板块的估值正在复苏，特别是中小市值股票的估值修复速度有望领先。政策支持民营企业发展和扩大内需的推进，也将成为市场关注的重点。\n\n市场影响分析：\n互联网行业的投资机会整体看来是乐观的。建议优先关注低估值的重点公司，如腾讯、阿里巴巴、拼多多、贝壳、百度、美团、快手和京东等。然而，投资过程中也存在一些潜在风险，如政策监管超预期、宏观经济增长放缓、利率上行和流动性收紧等。因此，投资者在决策时应充分考虑这些因素，并做好风险管理和多元化投资。\n--------------------------\n云栖大会后相关公司的股票和债券市场表现\n事件回顾：\n过去一年，科技巨头们的云业务一直处于调整状态。阿里巴巴暂缓了阿里云的分拆计划，表示将采取AI驱动、公共云优先战略；腾讯创始人兼CEO马化腾重新为腾讯云战略发展方向奠定基调；京东科技集团将京东云作为独立事业部开始运作；亚马逊、微软和谷歌的云业务均受到IT支出放缓的挤压。\n\n事件解读分析：\n摩根士丹利的报告指出，大部分云业务的调整阶段仍在进行中，预计将于今年3季度、4季度结束，但最新的调查显示，调整结束的日期有所推迟。目前的调整是在为未来发展夯实基础，人工智能将在2024年下半年和2025年给云业务带来更大的再加速潜力。云业务的业绩表现正在趋于稳定，离重新加速发展又近了一步。\n\n市场影响分析：\n目前云业务的业绩增长主要表现在微软的Azure业务方面。微软最新三季度财报显示，云业务收入未如市场预期那样放缓，而保持两位数的猛增势头——Azure和其他云服务的收入三季度增长29%，高于预期3个百分点。大摩认为，微软和谷歌将成为云业务的两大受益者，云业务的受益者正在向下游延伸。此外，云业务相关的软件管理、运营维护以及通信厂商也能从中受益，如SAP、Snowflake、Datadog、MongoDB、Confluent、F5、Nutanix和Palo Alto Networks。\n--------------------------\n云栖大会对资本市场的积极、中性或消极影响分析\n事件回顾：\n云栖大会是一场关于云计算的重要会议，其中涉及到云计算可能颠覆软件产业的观点，以及百度智能云发布的一系列云计算基础设施产品，旨在降低AI原生应用开发门槛，加速企业AI原生应用落地。\n\n事件解读分析：\n云计算的发展正在改变商业模式，影响开发、部署、运行、交付应用的方式。这种转变将数据中心放在网络的核心位置，所有的应用所需要的计算能力、存储、带宽、电力都由数据中心提供。此外，大模型市场的竞争日益激烈，云计算厂商平台优势更加凸显，市场参与者的发展路线出现分化，云计算市场格局有望率先加速洗牌。\n\n市场影响分析：\n云栖大会的举办对资本市场产生了积极影响。首先，云计算的发展推动了软件产业的变革，为相关企业提供了新的发展机遇。其次，百度智能云发布的云计算基础设施产品，有助于降低AI原生应用开发门槛，加速企业AI原生应用落地，这将推动AI原生应用市场走向繁荣，对相关企业的发展产生积极影响。据统计，目前千帆平台已经累计服务超过4万家企业用户，累计帮助企业用户精调近1万个大模型，这一数据足以证明云计算市场的活跃度和发展潜力。\n--------------------------\n\n-------------------------------------------------------------\n需要遵守的规则是：\n1. 不采用错误的信息。\n2. 不描述重复的信息。\n3. 不做对问题没有帮助的回答\n4. 简明扼要，重点突出，从不过多花哨词藻。\n5. 不在多处讲到同一个细节点，一个点只出现一次。\n6. 不说模糊的推测。\n7. 遵循背景信息中的要求。\n8. 尽量多的使用数值类信息。\n9. 不可以出现XXX、ABC等不明确的词语。\n仅仅使用提供的知识，一步一步来回答问题。"}, {"role": "assistant", "content": "基于云栖大会的相关信息，我们可以从以下两个部分进行投资机会的分析：\n\n第一部分：重点维度展开论述\n\n1. 技术创新带来的投资机会：云栖大会的核心议题包括数据化转型、云计算和人工智能（AI）的发展，这些都是当前科技领域的热点。数据化转型和云计算的深入推进将产生更多有价值的数据，创造更丰富的应用场景，为投资者带来新的机会。特别是AI技术的发展，已经在医疗、教育、自动驾驶等多个领域取得显著进步，预计将在2024年下半年和2025年给云业务带来更大的再加速潜力。\n\n2. 行业变革带来的投资机会：云栖大会后，互联网行业的投资机会引起了市场的广泛关注。中国的互联网行业发展迅猛，尤其是互联网金融和互联网+等领域。随着智能手机的普及和人工智能、物联网技术的发展，行业内部正在发生深刻的技术革新。这些技术革新为互联网行业带来了新的投资机会。\n\n第二部分：总结陈述\n\n云栖大会对资本市场产生了积极影响。首先，云计算的发展推动了软件产业的变革，为相关企业提供了新的发展机遇。其次，百度智能云发布的云计算基础设施产品，有助于降低AI原生应用开发门槛，加速企业AI原生应用落地，这将推动AI原生应用市场走向繁荣，对相关企业的发展产生积极影响。\n\n结合市场上各类机构和专家的观点，云栖大会带来的投资机会主要集中在制造板块、品牌消费和高股息策略三个主线。制造板块中，华利集团、申洲国际、台华新材、伟星股份、新澳股份、健盛集团等优质企业有望受益。品牌消费板块中，安踏体育、李宁、比音勒芬、报喜鸟、波司登、滔搏、富安娜等高景气品牌有望迎来结构性投资机会。高股息策略中，家纺、男装、制造和港股个股在当前市盈率较低，分红能力出色，具有较好的配置价值。此外，跟踪中证云计算与大数据主题指数的云计算ETF（516510）等产品也有望受益。\n\n然而，投资过程中也存在一些潜在风险，如政策监管超预期、宏观经济增长放缓、利率上行和流动性收紧等。因此，投资者在决策时应充分考虑这些因素，并做好风险管理和多元化投资。"}], "source": "self-made"}
+{"type": "chatml", "messages": [{"role": "user", "content": "从现在开始，你的角色是：投研分析师\n职责：\n善于从不同角度、有条理的回答用户的问题。\n你需要仅仅使用提供的知识，专业、详细的回答用户的问题。今天的时间: 2024-01-17，星期3\n-------------------------------------------------------------\n我的问题是：标题: 多只跨境ETF被“爆炒”!\n描述: 1月16日，多只跨境ETF放出巨大成交量，部分不足10亿跨境ETF盘中成交额已超越茅台，更有跨境基金一月成交额放大超140倍。\n-------------------------------------------------------------\n背景信息是：\n请自由发挥你的思路对热点事件进行解读，要求：\n- 逻辑缜密、语言高级、精炼、不啰嗦、又内容丰富、吸引眼球\n- 请用1. 2. 3. 分段，中间不要有空行，可分3段，每段至少50字，最多80字，格式是\"n. 第n段标题：第n段内容\n\"\n- 每段需要从不同方面去说明，多视角多角度\n- 能在事实性内容中出现具体标的，但不要有推荐或建议关注的倾向\n\n需要按照下面的格式输出：\n===（开始一定需要用3个=作为分隔线）\n1. （你的第一段标题）：（你的第一段解读）\n2. （你的第二段标题）：（你的第二段解读）\n...\n-------------------------------------------------------------\n仅仅可以使用下面的知识:\n标题: 多只跨境ETF被“爆炒”!\n描述: 1月16日，多只跨境ETF放出巨大成交量，部分不足10亿跨境ETF盘中成交额已超越茅台，更有跨境基金一月成交额放大超140倍。\n===\n1. 跨境ETF规模大增：根据Choice数据显示，2023年末，跨境ETF总规模达到2686.70亿元，相比2022年的1915.53亿元，增加了771.17亿元。这一显著增长反映出投资者对跨境ETF的热情提升。\n2. 高关注度领域突显：具体来看，港股创新药、港股互联网、美股科技赛道类的ETF规模增长明显。这些领域的热度反映了大众投资者的偏好和市场趋势。\n3. 市场预期潜在变化：有机构人士认为，美债收益率2023年四季度见顶回落，预计2024年全年或迎来趋势性下行，这将对利率较为敏感的资产产生影响，可能会带来新的投资机会。\n--------------------------\n2024年1月16日跨境ETF的成交额超越茅台的具体情况\n===\n1. 跨境ETF热潮：在2024年1月16日，部分市值不足10亿的跨境ETF盘中成交金额已超越贵州茅台，其中有些产品短短一个月时间成交额放大超140倍。不过，高溢价风险随之陡增，游资或开始出逃。例如，日经225ETF、东南亚科技ETF基金创出价格新高后开始走跌。\n\n2. 主力资金流出：以跨境通为例，1月16日主力资金净流出3168.88万元，占总成交额的15.17%，而游资资金净流出1377.03万元，占总成交额的6.59%。此表明，在高溢价风险的情况下，部分主力资金和游资选择了出逃。\n\n3. 散户热衷参与：与主力资金和游资不同，散户资金在此时却呈现净流入状态。以跨境通为例，其散户资金净流入4545.9万元，占总成交额的21.76%，说明在跨境ETF的炒作中，散户投资者依然保持积极态度。\n--------------------------\n2024年1月份跨境基金成交额放大超140倍的原因\n===\n1. 交易活跃度提升：2024年1月份，跨境ETF基金的成交额出现了显著的增长，甚至有些小市值的跨境ETF基金的日成交量超过了贵州茅台。例如，华夏基金旗下的日经ETF在1月16日的全天成交金额达到了47.79亿元，而其盘中市值仅有7.16亿元。同样，东南亚科技ETF基金，该基金盘中市值约6.64亿元，1月16日全天成交金额高达29.17亿元。\n\n2. 资金流向小市值：在微盘股炒作过热后，市场资金可能会寻找估值更低，或价格处在低位的小微盘品种。这在迷你基金的交易中得到了体现，投资者的资金开始追逐市值更小的跨境ETF基金产品。\n\n3. 投资风险提醒：虽然跨境ETF基金的交易活跃度提升，但是投资者应注意风险。例如，当小微盘出现明显赚钱效应后，市场资金会加速进入，进一步加强小微盘品种的表现。然而，随着价格的上涨，任何风格都不可能持续占优，微盘行情也值得警惕，尤其是微盘股的弱流动性，一旦发生风格切换可能出现“踩踏”现象。\n--------------------------\n2024年1月16日跨境ETF爆炒的市场背景\n===\n1. ETF涨幅领军：2024年1月16日，一场跨境ETF的爆炒在市场上展开，其中日经ETF(513520)、东南亚科技ETF(513730)和印度基金LOF(164824)涨幅分别超过8%、6%和5%。这表明投资者对于海外市场，尤其是亚洲市场的关注度和投资热情正在逐步提升。\n2. 板块动态：在板块方面，光伏和新能源两大板块表现抢眼，尤其是光伏30ETF(560980.SH)领涨市场。相比之下，创中盘88ETF(159804.SZ)表现不佳，成为跌幅最大的ETF。这反映了市场对绿色能源的持续看好以及对某些板块的短期调整。\n3. 市场交易情况：当日市场表现稳定，三大指数集体收涨，其中沪指上涨0.27%，深证成指上涨0.31%，创业板指上涨0.38%。总成交额达到6848亿，较上个交易日增加739亿。然而，北向资金全天净卖出41.33亿，显示外资整体上对中国市场的态度较为谨慎。\n--------------------------\n\n-------------------------------------------------------------\n需要遵守的规则是：\n1. 不采用错误的信息。\n2. 不描述重复的信息。\n3. 不做对问题没有帮助的回答\n4. 简明扼要，重点突出，从不过多花哨词藻。\n5. 不在多处讲到同一个细节点，一个点只出现一次。\n6. 不说模糊的推测。\n7. 遵循背景信息中的要求。\n8. 尽量多的使用数值类信息。\n9. 不可以出现XXX、ABC等不明确的词语。\n仅仅使用提供的知识，一步一步来回答问题。"}, {"role": "assistant", "content": "===\n1. 成交量暴增的驱动因素：1月16日，多只跨境ETF的成交量大增，其中部分市值不足10亿的跨境ETF盘中成交金额已超过贵州茅台。这可能源于投资者对国际市场的投资需求增加，以及对国内市场的一些热门股票（如茅台）的投资热情有所下降。同时，跨境ETF的优势在于可以让投资者方便地参与到国际市场的投资，这也是吸引投资者的一个重要因素。\n\n2. 行业偏好的变化：在跨境ETF的投资中，投资者对某些行业的偏好可能会发生变化。比如，港股创新药、港股互联网、美股科技赛道类的跨境ETF的规模增长较为明显，这可能反映出投资者对这些行业的关注度提升。\n\n3. 市场预期的影响：市场预期的变化也会影响投资者的投资行为。比如，如果市场预期美债收益率将趋势性下行，那么对利率敏感的资产可能会受到影响，投资者可能会寻找新的投资机会，这可能会促使部分投资者转向跨境ETF。"}], "source": "self-made"}
+{"type": "chatml", "messages": [{"role": "user", "content": "从现在开始，你的角色是：投研分析师\n职责：\n善于从不同角度、有条理的回答用户的问题。\n你需要仅仅使用提供的知识，专业、详细的回答用户的问题。今天的时间: 2024-02-20，星期2\n-------------------------------------------------------------\n我的问题是：标题: OPPO发布1+N智能体生态战略\n描述: OPPO刘作虎发布1+N智能体生态战略，这一生态由AI超级智能体和AIPro开发平台组成，基于巨型模型库和识别能力给出精准结果。\n-------------------------------------------------------------\n背景信息是：\n请自由发挥你的思路对热点事件进行解读，要求：\n- 逻辑缜密、语言高级、精炼、不啰嗦、又内容丰富、吸引眼球\n- 请用1. 2. 3. 分段，中间不要有空行，可分3段，每段至少50字，最多80字，格式是\"n. 第n段标题：第n段内容\n\"\n- 每段需要从不同方面去说明，多视角多角度\n- 能在事实性内容中出现具体标的，但不要有推荐或建议关注的倾向\n\n需要按照下面的格式输出：\n===（开始一定需要用3个=作为分隔线）\n1. （你的第一段标题）：（你的第一段解读）\n2. （你的第二段标题）：（你的第二段解读）\n...\n-------------------------------------------------------------\n仅仅可以使用下面的知识:\n标题: OPPO发布1+N智能体生态战略\n描述: OPPO刘作虎发布1+N智能体生态战略，这一生态由AI超级智能体和AIPro开发平台组成，基于巨型模型库和识别能力给出精准结果。\n===\n1. AI时代的开启：OPPO首席执行官陈明永描绘了未来五年AI对手机行业的重大影响，他认为这将与当年智能手机替代功能机的影响力相媲美。他宣布2024年为AI手机元年，并宣布OPPO将成立AI中心，全力发展AI技术。\n\n2. 1+N智能生态的构建：OPPO首席产品官刘作虎发布了1+N智能体生态战略。该生态由AI超级智能体和AI Pro开发平台组成，AI超级智能体能准确理解用户意图，基于庞大的模型库和识别能力给出精准结果，AI Pro智能体开发平台将使用户可以自由创造和开发自己需要的智能体，无需编写代码。\n\n3. 共创AI手机标准：OPPO期望与行业伙伴共同定义AI手机标准，构建AI手机生态。这意味着OPPO不仅将重心放在自身产品的创新上，也致力于推动整个行业的进步，与伙伴共同开创AI手机新时代。\n--------------------------\nOPPO发布的1+N智能体生态战略具体内容是什么？\n===\n1. 战略构成：OPPO的1+N智能体生态战略由两部分组成，一是AI超级智能体，二是AI Pro开发平台。其中，AI超级智能体能够准确理解用户意图，基于庞大的模型库和识别能力给出精准结果，并形成记忆习惯。而AI Pro开发平台则为用户提供了一个自由调用组合工具和插件，创造和开发自己需要的智能体的平台，而且无需写代码。\n\n2. 用户体验提升：该战略通过AI超级智能体理解用户意图并形成记忆习惯，以满足用户需求，提高用户体验。AI超级智能体基于模型库和识别能力，可以给出精准的结果，使得用户得到更贴切的服务。\n\n3. 开启AI手机时代：OPPO CEO陈明永将2024年定义为AI手机元年，认为AI对手机行业的影响，将完全可以比肩当年智能手机替代功能机。他期待AI手机成为继功能机、智能手机之后，手机行业的第三阶段。OPPO的1+N智能体生态战略，无疑是这个阶段的一个重要开端。\n--------------------------\nOPPO的1+N智能体生态战略对其未来发展有何影响？\n===\n1. AI时代的引领者：OPPO的1+N智能体生态战略，标志着其走在了AI手机元年的前沿。这一生态由AI超级智能体和AI Pro开发平台组成，其中超级AI智能体能够准确理解用户意图并给出精准结果，让手机更懂用户。OPPO已经看到了未来五年，AI对手机行业影响的巨大潜力，完全可以比肩当年智能手机替代功能机的革新。\n\n2. 开放创新的平台：OPPO的AI Pro智能体开发平台将正式上线，用户可以在该平台上自由调用组合工具和插件，创造和开发自己需要的智能体，而且无需写代码。这一策略将无疑会吸引更多的开发者加入，共同构建AI手机生态，推动AI手机行业的发展。\n\n3. 资源重塑的决策：为了推动这一战略，OPPO专门成立了AI中心，资源将向AI集中。这表明OPPO已经把AI作为新的发展焦点，通过资源重塑，推动AI技术的研发和应用，以期在手机行业的第三阶段——AI手机阶段，占据先机。\n--------------------------\nOPPO的1+N智能体生态战略对市场和行业有何影响？\n===\n1. 战略构建：OPPO提出了1+N智能体生态战略，这一生态由AI超级智能体和AI Pro开发平台组成，旨在通过准确理解用户意图并提供精准结果，形成记忆习惯，真正理解用户需求。AI Pro智能体开发平台也即将上线，用户可以在该平台上自由调用组合工具和插件，创造和开发自己需要的智能体，而且无需编写代码。\n2. 行业影响：OPPO创始人兼首席执行官陈明永表示，2024年是AI手机元年，AI对手机行业的影响将与智能手机替代功能机时的影响相当。预示着手机行业进入了以AI为主导的第三阶段。OPPO因此专门成立了AI中心，将资源向AI领域集中，这将为其在行业内的地位和影响力带来提升。\n3. 市场响应：OPPO的1+N智能体生态战略，将使用户能够更方便地创建和开发个性化的智能体，满足用户对个性化和智能化服务的需求，进一步提升用户体验。同时，OPPO愿与行业伙伴共同定义AI手机标准，共建AI手机生态，有望推动整个行业的进步和发展。\n--------------------------\n\n-------------------------------------------------------------\n需要遵守的规则是：\n1. 不采用错误的信息。\n2. 不描述重复的信息。\n3. 不做对问题没有帮助的回答\n4. 简明扼要，重点突出，从不过多花哨词藻。\n5. 不在多处讲到同一个细节点，一个点只出现一次。\n6. 不说模糊的推测。\n7. 遵循背景信息中的要求。\n8. 尽量多的使用数值类信息。\n9. 不可以出现XXX、ABC等不明确的词语。\n仅仅使用提供的知识，一步一步来回答问题。"}, {"role": "assistant", "content": "===\n1. 战略本质：OPPO发布的1+N智能体生态战略是一个双元素构成的新生态，其中AI超级智能体的主要职能是精准理解用户需求并提供个性化服务，而AIPro开发平台则提供了一个开放的平台，允许用户自由创造和开发所需的智能体，无需编写代码。\n\n2. 行业影响：OPPO首席执行官陈明永将2024年定义为AI手机元年，这一声明突显了AI在手机行业未来发展中的重要性。他预期，AI将对手机行业产生与智能手机替代功能机时期相当的影响，这意味着手机行业或将进入以AI为主导的新阶段。\n\n3. 企业发展：为了推进1+N智能体生态战略，OPPO将成立专门的AI中心，以推动AI技术的研发和应用。这一决策预示了OPPO将把AI作为新的发展重心，通过资源重塑，以期在即将到来的AI手机时代占据先机。"}], "source": "self-made"}
+{"type": "chatml", "messages": [{"role": "user", "content": "从现在开始，你的角色是：投研分析师\n职责：\n善于从不同角度、有条理的回答用户的问题。\n你需要仅仅使用提供的知识，专业、详细的回答用户的问题。今天的时间: 2024-01-24，星期3\n-------------------------------------------------------------\n我的问题是：标题: 小米汽车专利可预热电池提高充电效率\n描述: 天眼查App显示，1月23日，小米汽车科技有限公司申请的“车辆电池预热方法、装置、车辆及可读存储介质”专利获授权。\n-------------------------------------------------------------\n背景信息是：\n请自由发挥你的思路对热点事件进行解读，要求：\n- 逻辑缜密、语言高级、精炼、不啰嗦、又内容丰富、吸引眼球\n- 请用1. 2. 3. 分段，中间不要有空行，可分3段，每段至少50字，最多80字，格式是\"n. 第n段标题：第n段内容\n\"\n- 每段需要从不同方面去说明，多视角多角度\n- 能在事实性内容中出现具体标的，但不要有推荐或建议关注的倾向\n\n需要按照下面的格式输出：\n===（开始一定需要用3个=作为分隔线）\n1. （你的第一段标题）：（你的第一段解读）\n2. （你的第二段标题）：（你的第二段解读）\n...\n-------------------------------------------------------------\n仅仅可以使用下面的知识:\n标题: 小米汽车专利可预热电池提高充电效率\n描述: 天眼查App显示，1月23日，小米汽车科技有限公司申请的“车辆电池预热方法、装置、车辆及可读存储介质”专利获授权。\n===\n1. 技术创新：小米汽车科技有限公司申请的“车辆电池预研方法、装置、车辆及可读存储介质”专利获授权。这表明小米正在不断研发创新，以提高电池的充电效率，这将有助于提升小米汽车的续航能力和用户体验。\n\n2. 产品配置与市场竞争：小米汽车SU7硬件配置包括800V高压快充、骁龙8295座舱芯片、一体式激光雷达、双电机全轮驱动等，具备了一辆爆款车的基本要素。然而，随着汽车市场智能化，未来竞争将更多侧重于智能驾驶和智能座舱等软件方面。小米表示，全栈自研智能驾驶技术，并将大模型技术全面融入，可以带来更精准的判断，更强、更安全的智能驾驶体验。\n\n3. 生态优势：至2023Q3，小米已成为全球最大的消费级IoT平台，连接设备数已达6.55亿台，拥有5个及以上小米IoT设备的用户已达1300万。小米汽车的加入，将推动\"人车家全生态\"闭环，小米澎湃OS的诸多特性和完备流畅的生态体验，将全部在小米汽车上实现。小米汽车产品得到优酷、腾讯视频、哔哩哔哩等多家主流APP的生态互联支持，消费者可以体验手机与车机跨端的无感连接。\n--------------------------\n分析小米汽车科技有限公司该专利对电动汽车充电效率提升的具体作用。\n===\n1. 创新驱动：小米汽车科技有限公司近期申请的“车辆电池预热方法、装置、车辆及可读存储介质”专利获授权，彰显其在电动汽车技术领域的创新能力。该专利通过预热电池，提升充电性能，从而缩短充电时间，提高整体充电效率。\n2. 预热机制：该专利的核心是一个精细的预热机制。该机制首先确定目标充电桩和车辆行驶至充电桩时的预估剩余电量，然后根据充电桩的充电功率和剩余电量，确定电池的目标温度和加热速率，从而确定预估加热时长。\n3. 实施效应：最后，根据预估加热时长和车辆行驶至目标充电桩的行驶时长，对电池进行加热，以确保电池在到达充电桩时达到最佳充电状态。这种方法有望提升电动汽车的使用便捷性，可能会对电动汽车市场产生积极影响。\n--------------------------\n探寻小米汽车科技有限公司申请该专利的背景和目的。\n===\n1. 电池和车身一体化：小米汽车科技有限公司申请的“电池及车身一体化结构、车辆”专利公布。这项技术的实现将使电池包壳体的刚度和侧碰传力性能得到提高，同时，通过降低车身结构的自重，实现车辆的轻量化，提高车辆的续航里程。\n2. 电池预热技术：小米汽车申请的“车辆电池预热方法、装置、车辆及可读存储介质”专利获授权。这个技术可以提升充电性能，减少充电时间，进而提高电池的充电效率。其方法包括预估车辆行驶至目标充电桩的剩余电量，确定电池的目标温度和第一目标加热速率，对电池进行加热。\n3. 传感器模组：北京小米移动软件有限公司申请了一项名为“传感器模组和具有其的电子设备”的专利。该传感器模组的结构设计合理，空间利用率高，内含第一传感器和第二传感器，这两个传感器与柔性电路板电连接，电路板环绕在支架上，传感器沿支架的厚度方向堆叠。\n--------------------------\n考察小米汽车科技有限公司申请该专利后，对公司自身及电动车市场可能产生的影响。\n===\n1. 技术创新驱动：小米汽车科技有限公司的新专利“车辆电池预热方法、装置、车辆及可读存储介质”已于1月23日获得授权。这一技术以提升充电性能减少充电时间，进而提高电池的充电效率为目标，体现了小米在电动车领域的技术创新力度。\n2. 技术细节揭示：该技术通过确定目标充电桩、预估剩余电量，然后根据充电功率和剩余电量确定电池的目标温度及预热速率，最后根据预估加热时长和行驶时长对电池进行加热。这一流程的设定无疑将电池预热与行驶计划紧密结合，提升了充电效率。\n3. 对电动车市场影响：这项新技术的应用不仅将提升小米汽车自身的充电效率，也将对整个电动车市场产生深远影响。它将推动电动车市场的技术创新，从而优化用户体验，提高电动车的市场接纳度。\n--------------------------\n查找其他电动车公司是否有类似的电池预热专利，进行比较。\n===\n1. 先进技术的保护：从比亚迪和小米汽车的行动中可以看出，电动车公司对电池预热的专利保护越来越重视。比如比亚迪股份有限公司获得了一项名为“车辆、能量转换装置及其控制方法”的专利，可以提升电池包的加热效率。小米汽车科技有限公司申请的“车辆电池预热方法、装置、车辆及可读存储介质”专利，旨在提升充电性能减少充电时间，进而提高电池的充电效率。\n2. 专利技术的创新性：这些公司的专利都体现出深厚的技术创新能力。比如，比亚迪的专利可以通过对车辆状态和/或车辆性能参数的检测，选择相应的加热控制模式，实现对电池包进行加热过程的精确控制。小米汽车的专利则能够预估车辆行驶至目标充电桩时的剩余电量，根据预估加热时长和车辆行驶至目标充电桩的行驶时长，对电池进行加热。\n3. 行业竞争的激烈程度：从这些公司的专利申请和授权情况来看，电动车行业的竞争已经进入到技术层面，每家公司都在努力提高自己的技术门槛，以取得市场的竞争优势。\n--------------------------\n\n-------------------------------------------------------------\n需要遵守的规则是：\n1. 不采用错误的信息。\n2. 不描述重复的信息。\n3. 不做对问题没有帮助的回答\n4. 简明扼要，重点突出，从不过多花哨词藻。\n5. 不在多处讲到同一个细节点，一个点只出现一次。\n6. 不说模糊的推测。\n7. 遵循背景信息中的要求。\n8. 尽量多的使用数值类信息。\n9. 不可以出现XXX、ABC等不明确的词语。\n仅仅使用提供的知识，一步一步来回答问题。"}, {"role": "assistant", "content": "===\n1. 技术创新驱动：小米汽车科技有限公司的新专利“车辆电池预热方法、装置、车辆及可读存储介质”获得授权，表明公司在电池充电效率提升方面进行了积极的技术创新。通过预热电池，可以提高充电性能，减少充电时间，从而提升电池的充电效率。\n\n2. 产品优势凸显：该专利的授权将有助于小米汽车在电动汽车市场中获取竞争优势。电池充电效率的提升可以提升电动汽车的使用便捷性，提高续航能力，为消费者带来更优质的用户体验。\n\n3. 行业影响拓展：该专利的授权不仅对小米汽车科技有限公司自身的发展具有积极意义，同时也可能推动整个电动车行业的技术进步。预热电池的技术可以提高电动车的充电效率，对于推动电动车的市场普及具有重要作用。"}], "source": "self-made"}
+{"type": "chatml", "messages": [{"role": "user", "content": "从现在开始，你的角色是：投研分析师\n职责：\n善于从不同角度、有条理的回答用户的问题。\n你需要仅仅使用提供的知识，专业、详细的回答用户的问题。今天的时间: 2024-01-23，星期2\n-------------------------------------------------------------\n我的问题是：标题: 合盛硅业于内蒙古投资成立绿能科技公司\n描述: 近日，内蒙古创源绿能科技有限公司成立，经营范围包含太阳能热发电装备销售等。企查查股权穿透显示，该公司由合盛硅业间接全资控股。\n-------------------------------------------------------------\n背景信息是：\n请自由发挥你的思路对热点事件进行解读，要求：\n- 逻辑缜密、语言高级、精炼、不啰嗦、又内容丰富、吸引眼球\n- 请用1. 2. 3. 分段，中间不要有空行，可分3段，每段至少50字，最多80字，格式是\"n. 第n段标题：第n段内容\n\"\n- 每段需要从不同方面去说明，多视角多角度\n- 能在事实性内容中出现具体标的，但不要有推荐或建议关注的倾向\n\n需要按照下面的格式输出：\n===（开始一定需要用3个=作为分隔线）\n1. （你的第一段标题）：（你的第一段解读）\n2. （你的第二段标题）：（你的第二段解读）\n...\n-------------------------------------------------------------\n仅仅可以使用下面的知识:\n标题: 合盛硅业于内蒙古投资成立绿能科技公司\n描述: 近日，内蒙古创源绿能科技有限公司成立，经营范围包含太阳能热发电装备销售等。企查查股权穿透显示，该公司由合盛硅业间接全资控股。\n===\n1. 硅业巨头的新动向：合盛硅业近期在内蒙古设立全资子公司——创源绿能科技有限公司，注册资本5000万，主要经营业务为太阳能热发电装备销售等新能源相关业务。这一举措是合盛硅业在积极布局光伏和碳化硅领域，以实现硅基新材料的产业化的一部分。\n\n2. 项目投资概览：近年来，合盛硅业在多个领域出击，项目投资金额巨大。公司通过“光伏+碳化硅”的布局，致力于打造成为硅基新材料领域的领导者，开启新的增长曲线。其六大项目合计项目金额为653.38亿元，累计投入金额为229.69亿元。\n\n3. 产业链布局：合盛硅业不仅布局硅料业务，也同步向下游扩张，进入组件、光伏玻璃等领域。在中部和东部地区投资光伏玻璃项目和组件项目，预计在2023年下半年至2024年一季度陆续投产。这些举措有望进一步提升合盛硅业的产业链竞争力。\n--------------------------\n合盛硅业在内蒙古成立绿能科技公司的详细信息\n===\n1. 跨地区布局：合盛硅业近期在浙江嘉兴和内蒙古相继设立了两家全资子公司，分别是浙江合量科技有限公司和内蒙古创源绿能科技有限公司。这两家公司的经营范围主要涉及新材料技术研发、电子专用设备销售、储能技术服务等领域，展现了合盛硅业在光伏和新材料领域的战略布局。\n2. 资本运作加速：这两家新设立的公司的注册资本分别为1亿元和5000万元，显示出合盛硅业在资本运作上的决心和实力。此外，合盛硅业（万宁）有限公司也全资持有一家在内蒙古设立的新材料科技公司，进一步丰富了公司的资本结构和业务布局。\n3. 行业前景展望：随着新能源和新材料行业的快速发展，合盛硅业此次的行动无疑为公司的未来发展奠定了坚实的基础。而其在新能源和新材料领域的布局，也预示着该行业的广阔前景和巨大商业价值。\n--------------------------\n合盛硅业在新能源领域的投资布局\n===\n1. 光伏产业链布局：合盛硅业在新疆地区整合低成本资源，进一步布局多晶硅、光伏玻璃、电池片、组件等光伏产业链产品。其中，新疆中部合盛的年产20万吨多晶硅与150万吨新能源装备用超薄高透光伏玻璃项目有望于2023年第三季度投产，而东部合盛的年产20万吨高纯多晶硅项目预计将于2024年第一季度陆续投产。此外，公司的年产20GW光伏组件项目预计从2023年第四季度开始执行。\n2. 工业硅项目进展：云南合盛年产80万吨工业硅及配套项目一期预计于2024年完工。这一项目的完成将进一步提升合盛硅业在工业硅市场的竞争力，提高公司的整体盈利能力。\n3. 硅基新材料产业化：合盛硅业正在积极布局光伏和碳化硅领域，以实现硅基新材料的产业化。公司于2023年5月通过了2万片宽禁带半导体碳化硅衬底及外延片产业化生产线的验收，6英寸晶体良率达到了90%,外延片良率达到了95%，同时8英寸衬底也实现了量产。这显示出合盛硅业在硅基新材料领域的技术实力和市场竞争力。\n\n--------------------------\n内蒙古创源绿能科技有限公司的经营范围和业务概述\n用户的问题：请问内蒙古的新能源发展现状如何，有哪些企业在其中起主导作用？\n\n===\n1. 公司布局：内蒙古创源绿能科技有限公司由合盛硅业间接全资控股，注册资本5000万元，经营范围包括太阳能热发电装备销售、新能源原动设备制造、储能技术服务等。公司的成立标志着合盛硅业在新能源领域的布局进一步扩大。\n\n2. 项目推动：内蒙古三峡蒙能能源有限公司在库布其沙漠鄂尔多斯中北部新能源基地建设的光伏项目已并网发电，总装机规模1600万千瓦。项目建成后，每年可向京津冀地区输送清洁电能400亿千瓦时。同时，杭锦旗朔方新能源大基地规划建设面积48万余亩，总规模1300万千瓦。\n\n3. 发展状况：截至2023年12月底，内蒙古新能源装机规模突破9200万千瓦，全年新增装机超过3100万千瓦，增量创历史新高。内蒙古新能源项目建设步履不停，风光资源富集，已印发实施了新能源倍增行动实施方案、光伏治沙行动实施方案、促进新能源消纳若干举措等多项政策，为加快新能源项目建设提供了有力的政策保障。\n--------------------------\n合盛硅业的股权结构及其对内蒙古创源绿能科技有限公司的控股情况\n===\n1. 创新控股：根据企查查APP显示，合盛硅业近日间接全资控股了新成立的内蒙古创源绿能科技有限公司。该公司注册资本5000万元，经营范围包含太阳能热发电装备销售、新能源原动设备制造、储能技术服务以及合同能源管理等。\n\n2. 新材料布局：同时，合盛硅业也间接全资控股了新成立的内蒙古源芯新材料有限公司。该公司注册资本1亿元，主要经营范围为新材料技术研发、电子专用材料制造、电子专用材料研发以及电子专用设备销售等。\n\n3. 多元化发展：这两次控股行为显示出合盛硅业在业务上的多元化发展趋势，企业不仅在新能源领域进行了布局，同时也在新材料领域进行了深度探索。这对于合盛硅业的长期发展来说，无疑是一种积极的尝试和布局。\n--------------------------\n内蒙古创源绿能科技有限公司成立对合盛硅业战略发展的影响\n===\n1. 合盛硅业战略布局：合盛硅业正积极布局光伏和碳化硅领域，以实现硅基新材料的产业化。公司已通过了2万片宽禁带半导体碳化硅衬底及外延片产业化生产线的验收，并具备量产能力。同时还计划投资光伏玻璃项目和组件项目，预计的投产时间已经公布，表明公司对于硅基新材料领域的长远发展有明确的规划和目标。\n2. 创源绿能科技有限公司成立：最近，合盛硅业间接全资控股的内蒙古创源绿能科技有限公司成立，注册资本5000万元，经营范围包含太阳能热发电装备销售；新能源原动设备制造；储能技术服务；合同能源管理等。这一举措进一步强化了合盛硅业在新能源领域的布局。\n3. 内蒙古新能源发展态势：内蒙古正在全面高质量发展新能源项目，例如库布其沙漠鄂尔多斯中北部新能源基地总装机规模1600万千瓦，每年可向京津冀地区输送清洁电能400亿千瓦时。此外，全区新能源装机规模突破9200万千瓦，全年新增装机超过3100万千瓦。这些数据显示出内蒙古在新能源领域的巨大潜力和发展空间，为合盛硅业提供了广阔的市场和良好的发展环境。\n--------------------------\n\n-------------------------------------------------------------\n需要遵守的规则是：\n1. 不采用错误的信息。\n2. 不描述重复的信息。\n3. 不做对问题没有帮助的回答\n4. 简明扼要，重点突出，从不过多花哨词藻。\n5. 不在多处讲到同一个细节点，一个点只出现一次。\n6. 不说模糊的推测。\n7. 遵循背景信息中的要求。\n8. 尽量多的使用数值类信息。\n9. 不可以出现XXX、ABC等不明确的词语。\n仅仅使用提供的知识，一步一步来回答问题。"}, {"role": "assistant", "content": "===\n1. 硅业巨头布局新能源：近日，合盛硅业在内蒙古设立了全资子公司——内蒙古创源绿能科技有限公司，主要经营业务为太阳能热发电装备销售等新能源相关业务。这显然是合盛硅业在新能源领域进一步深化布局的重要举措。\n\n2. 业务拓展及发展策略：合盛硅业此次的举动，不仅扩大了其在新能源领域的战略布局，同时也展现出了公司在追寻可持续发展，积极拓展绿色能源业务的决心。这种策略有利于公司在未来新能源市场的竞争中获得更大的优势。\n\n3. 对于行业影响：该公司的成立将进一步推动新能源行业的发展，尤其是在太阳能热发电装备销售等领域。同时，这也可能会对未来的新能源市场格局产生一定影响。"}], "source": "self-made"}
+{"type": "chatml", "messages": [{"role": "user", "content": "从现在开始，你的角色是：投研分析师\n职责：\n善于从不同角度、有条理的回答用户的问题。\n你需要仅仅使用提供的知识，专业、详细的回答用户的问题。今天的时间: 2024-02-04，星期7\n-------------------------------------------------------------\n我的问题是：标题: 特斯拉召回在美几乎所有车辆\n描述: 近日特斯拉正在召回其在美国销售的几乎所有车辆，原因是车辆仪表板上的一些警示灯的字体太小，这可能会使驾驶者增加发生碰撞的风险。\n-------------------------------------------------------------\n背景信息是：\n请自由发挥你的思路对热点事件进行解读，要求：\n- 逻辑缜密、语言高级、精炼、不啰嗦、又内容丰富、吸引眼球\n- 请用1. 2. 3. 分段，中间不要有空行，可分3段，每段至少50字，最多80字，格式是\"n. 第n段标题：第n段内容\n\"\n- 每段需要从不同方面去说明，多视角多角度\n- 能在事实性内容中出现具体标的，但不要有推荐或建议关注的倾向\n\n需要按照下面的格式输出：\n===（开始一定需要用3个=作为分隔线）\n1. （你的第一段标题）：（你的第一段解读）\n2. （你的第二段标题）：（你的第二段解读）\n...\n-------------------------------------------------------------\n仅仅可以使用下面的知识:\n标题: 特斯拉召回在美几乎所有车辆\n描述: 近日特斯拉正在召回其在美国销售的几乎所有车辆，原因是车辆仪表板上的一些警示灯的字体太小，这可能会使驾驶者增加发生碰撞的风险。\n===\n1. 召回规模广泛：特斯拉公司近期宣布，将召回在美国销售的几乎所有车辆，总计约220万辆。召回的车型包括2012-2023年款Model S、2016-2024年款Model X、2017-2023年款Model 3、2019-2024年款Model Y和2024款Cybertruck。\n\n2. 召回原因明确：这次召回的主要原因是车辆仪表板上显示的制动、驻车和防抱死制动系统（ABS）警告灯的字体大小不符合联邦安全标准，可能导致驾驶者难以读取关键的安全信息，增加发生碰撞的风险。\n\n3. 解决方案到位：特斯拉公司表示，将通过在线软件更新的方式解决此次警示灯字体问题。车主将从2024年3月30日开始收到更新通知。此次召回并非负面新闻，而是特斯拉企业负责任的表现。\n--------------------------\n特斯拉近期在美国召回车辆的详细情况\n===\n1. 召回原因及影响：特斯拉近日决定在美国召回几乎所有车型，原因是车辆仪表板上的一些警示灯的字体太小，可能导致驾驶者难以读取关键的安全信息，增加发生碰撞的风险。召回车型包括2012年至2023年款Model S、2016年至2023年款Model X、2017年至2023年款Model 3、2019年至2024年款Model Y和2024年款赛博皮卡（Cybertruck）。\n   \n2. 解决措施：特斯拉已开始发布软件更新，以对警示灯字体进行更新，车主将从3月30日开始收到通知。此次召回采取的是在线软件升级方式，较传统的召回方式更为便捷，减少了客户的时间成本。\n\n3. 召回影响：特斯拉已确认有三起保修索赔可能与该问题有关，但没有撞车或人员伤亡事故的报告, 这显示出特斯拉对车辆安全的高度重视，并积极采取措施进行改正，这在一定程度上提升了特斯拉在消费者心中的品牌形象。\n--------------------------\n特斯拉召回车辆事件的原因及其对驾驶者安全的影响\n===\n1. 召回事件概述：特斯拉面临两次大规模的召回事件。第一次涉及约334569辆Model 3和Model Y，原因是有近2400起关于驾驶员方向盘失控的投诉，已经发生一起车祸。第二次涉及的是从2012年至2024年款的几乎所有车型，原因是一些警示灯的字体太小，可能会使驾驶者难以读取关键的安全信息，增加发生碰撞的风险。\n2. 召回事件的影响：召回事件不仅对特斯拉的品牌声誉构成威胁，还可能导致公司承担大量的维修成本。尤其是针对方向盘失控问题的召回，可能需要实际更换零件，而不仅仅是通过无线软件进行补救。此外，这些问题可能使得消费者对特斯拉的安全性产生怀疑，影响其销售。\n3. 召回事件的应对：特斯拉已经开始对警示灯字体问题进行在线软件更新，车主将从3月30日开始收到通知。对于方向盘失控问题，特斯拉已向调查人员提供了某些转向齿条零件编号，表明调查可能会导致实际召回。尽管这两次召回事件对特斯拉带来了挑战，但也体现了特斯拉对消费者安全的重视和应对问题的决心。\n--------------------------\n特斯拉召回车辆事件对其股价的影响\n===\n1. 召回事件的规模：特斯拉近期公布了大规模的汽车召回事件，涉及车型包括2012-2023年款Model S、2016-2024年款Model X、2017-2023年款Model 3、2019-2024年款Model Y和2024年款Cybertruck等，总计2193869辆。另外，美国国家公路交通安全管理局估计有334569辆2023年款Model 3和Model Y汽车需要接受工程分析。\n\n2. 召回原因的多元性：召回的原因多种多样，包括仪表板上显示的制动、驻车和防抱死制动系统(ABS)警告灯的字体大小不正确，以及车门解锁逻辑控制问题。在自动辅助转向功能开启情况下，驾驶员可能误用2级组合驾驶辅助功能，增加车辆发生碰撞的风险。\n\n3. 股价影响的瞬时性：这一召回事件让特斯拉的股价受到了影响，报183.16美元，跌幅超过3%。然而，由于特斯拉的市场影响力和创新能力，这种瞬时的股价影响并不代表其长期价值。\n--------------------------\n特斯拉召回车辆事件的处理和应对措施\n===\n1. 缺陷召回：特斯拉近期面临美国国家公路交通安全管理局（NHTSA）的两项召回调查。首先是该公司的Model 3和Model Y车型被发现存在驾驶员方向盘失控问题，据悉，已收到2388起相关投诉，涉及车辆总数为334569辆。此次问题的解决可能涉及实体零件的更换，这将带来更高的维修成本。\n\n2. 字体问题：其次，特斯拉几乎所有在美国销售的车辆，包括2012年至2023年款的Model S、Model X、Model 3，以及2019年至2024年款的Model Y和Cybertruck，因其警示灯字体太小，难以读取关键的安全信息，被要求进行在线软件更新。据称，特斯拉已于3月30日开始发布相关更新。\n\n3. 后续影响：在这两起事件中，特斯拉均未立即回复置评请求，但对其公众形象和财务状况都可能产生影响。尤其是方向盘失控问题，由于涉及的是实体零件更换，预计将导致特斯拉的维修成本显著提升。\n--------------------------\n\n-------------------------------------------------------------\n需要遵守的规则是：\n1. 不采用错误的信息。\n2. 不描述重复的信息。\n3. 不做对问题没有帮助的回答\n4. 简明扼要，重点突出，从不过多花哨词藻。\n5. 不在多处讲到同一个细节点，一个点只出现一次。\n6. 不说模糊的推测。\n7. 遵循背景信息中的要求。\n8. 尽量多的使用数值类信息。\n9. 不可以出现XXX、ABC等不明确的词语。\n仅仅使用提供的知识，一步一步来回答问题。"}, {"role": "assistant", "content": "===\n1. 召回行动的规模：特斯拉正在召回其在美国销售的几乎所有车辆，召回的规模之大在汽车行业中并不常见。这可能会对特斯拉的品牌形象、客户信任度、以及经济状况产生一定影响。\n\n2. 召回原因的关注：召回的原因是仪表板上的警示灯字体太小，这可能会使驾驶者在驾驶过程中忽视这些重要的警示信息，从而增加发生交通事故的风险。这个原因虽然看似细小，但却关乎到车辆的安全性，值得我们高度关注。\n\n3. 特斯拉的应对措施：尽管召回规模巨大，但特斯拉对此的应对措施值得肯定。他们选择以最快的方式解决问题，避免了更大的安全隐患。这次事件或许会暂时影响特斯拉的形象，但从长远来看，它展现了特斯拉对消费者安全的高度重视，有利于提升消费者对其产品的信任度。"}], "source": "self-made"}
diff --git a/dataset/peer_financial_training_dataset/v20240704/planning_agent_data.jsonl b/dataset/peer_financial_training_dataset/v20240704/planning_agent_data.jsonl
new file mode 100644
index 00000000..c84ad491
--- /dev/null
+++ b/dataset/peer_financial_training_dataset/v20240704/planning_agent_data.jsonl
@@ -0,0 +1,11 @@
+{"instruction": "你是一位精通信息分析的ai助手，并且非常了解收集什么样的信息对回答问题最重要。你现在需要结合背景信息回答给定的问题，给出多个搜索query，尽可能切中要害、简介明了，以最终回答问题。\n    你需要遵守以下规则：\n    1. 搜索query是对问题的横向拆分，类似于改写问题与阅读理解。你可以对于问题更直白和细致的改写，或者通过阅读方式改写问题，每个搜索条件都需要可以直接搜索到这个问题的答案。\n    2. 请严格按照相关性，生成的内容一定是和问题高度相关。\n    3. 注意在相关的基础上，你需要从分析财经信息的一般过程出发，将生成的query按照重要性和逻辑性排序，最重要的放在最前面\n    4. 注意生成的内容要贴合问题的意图，贴合问题的主体\n    5. 根据问题和背景信息，确认问题关心的时间点，可以是具体的时间点，也可以是最新、最近、近期等描述\n    6. 如果存在背景信息，则结合背景信息\n    \n    让我们一步一步来。\n    问题是：全球十大银行减免服务费对全球金融市场的影响是什么？\n    今天的日期是：2024-01-30\n    背景信息是：\n    -------------------------------\n    输出必须是按照格式:\n    suggestion：思考过程\n    answer：\n    1.\n    2.\n    3.\n    ", "output": "suggestion： 用户提问的是全球十大银行减免服务费对全球金融市场的影响，这是一个涉及全球金融市场的大事件，可能涉及到政策、经济、行业等多个方面的影响。这就需要我们从政策出台的背景、影响的多空情况，以及事件对基本面、政策面、情绪面、估值面、资金面的影响等多个角度去考虑。此外，这个问题涉及的是全球十大银行，所以我们需要对这十家银行的具体情况有所了解。\nanswer：1.全球十大银行减免服务费的政策出台背景和原因\n2.全球十大银行减免服务费政策对行业基本面、流动性、风险偏好的影响\n3.全球十大银行减免服务费政策对行业的短期和中长期多空影响\n4.全球十大银行减免服务费事件对全球金融市场基本面、政策面、情绪面、估值面、资金面的影响\n5.全球十大银行减免服务费的具体情况和影响力度。"}
+{"instruction": "你是一位精通信息分析的ai助手，并且非常了解收集什么样的信息对回答问题最重要。你现在需要结合背景信息回答给定的问题，给出多个搜索query，尽可能切中要害、简介明了，以最终回答问题。\n    你需要遵守以下规则：\n    1. 搜索query是对问题的横向拆分，类似于改写问题与阅读理解。你可以对于问题更直白和细致的改写，或者通过阅读方式改写问题，每个搜索条件都需要可以直接搜索到这个问题的答案。\n    2. 请严格按照相关性，生成的内容一定是和问题高度相关。\n    3. 注意在相关的基础上，你需要从分析财经信息的一般过程出发，将生成的query按照重要性和逻辑性排序，最重要的放在最前面\n    4. 注意生成的内容要贴合问题的意图，贴合问题的主体\n    5. 根据问题和背景信息，确认问题关心的时间点，可以是具体的时间点，也可以是最新、最近、近期等描述\n    6. 如果存在背景信息，则结合背景信息\n    \n    让我们一步一步来。\n    问题是：对2024年3月15日欧洲央行会议结果和拉加德的讲话表态进行分析。\n    今天的日期是：2024-01-30\n    背景信息是：\n    -------------------------------\n    输出必须是按照格式:\n    suggestion：思考过程\n    answer：\n    1.\n    2.\n    3.\n    ", "output": "suggestion： 用户的问题是要求对2024年3月15日欧洲央行会议结果和拉加德的讲话表态进行分析。这个问题的隐含意图是想了解这次会议和讲话对于行业政策、经济、股市等方面的影响。需要从政策出台背景、政策对行业的影响、大事对股市的影响等多个方面进行考虑。这个问题只涉及到一个实体，即欧洲央行，不需要拆分。\nanswer：1. 2024年3月15日欧洲央行会议结果的具体内容\n2. 拉加德在2024年3月15日欧洲央行会议上的讲话内容\n3. 2024年3月15日欧洲央行会议结果对行业政策的影响\n4. 拉加德在2024年3月15日欧洲央行会议上的讲话对行业政策的影响\n5. 2024年3月15日欧洲央行会议结果和拉加德讲话对股市的影响"}
+{"instruction": "你是一位精通信息分析的ai助手，并且非常了解收集什么样的信息对回答问题最重要。你现在需要结合背景信息回答给定的问题，给出多个搜索query，尽可能切中要害、简介明了，以最终回答问题。\n    你需要遵守以下规则：\n    1. 搜索query是对问题的横向拆分，类似于改写问题与阅读理解。你可以对于问题更直白和细致的改写，或者通过阅读方式改写问题，每个搜索条件都需要可以直接搜索到这个问题的答案。\n    2. 请严格按照相关性，生成的内容一定是和问题高度相关。\n    3. 注意在相关的基础上，你需要从分析财经信息的一般过程出发，将生成的query按照重要性和逻辑性排序，最重要的放在最前面\n    4. 注意生成的内容要贴合问题的意图，贴合问题的主体\n    5. 根据问题和背景信息，确认问题关心的时间点，可以是具体的时间点，也可以是最新、最近、近期等描述\n    6. 如果存在背景信息，则结合背景信息\n    \n    让我们一步一步来。\n    问题是：明年的失业率会降低吗？\n    今天的日期是：2024-01-30\n    背景信息是：1.从宏观经济环境分析 2.从政策导向角度考虑 3.结合市场预期分析 4.从经济指标同比、环比的趋势分析 5.从经济指标的细分项分析\n    -------------------------------\n    输出必须是按照格式:\n    suggestion：思考过程\n    answer：\n    1.\n    2.\n    3.\n    ", "output": "suggestion： 用户的问题是关于明年失业率的预测，这是一个宏观经济问题，需要从多个角度进行分析。首先，我们可以从宏观经济环境的角度来看，比如GDP增长率、通货膨胀率等因素可能会影响失业率。其次，我们可以从政策导向的角度来看，比如政府是否有相关的就业政策。再者，我们可以从市场预期的角度来看，比如市场对于明年经济的预期如何。最后，我们还可以从经济指标的趋势和细分项来看，比如近年来的失业率趋势如何，哪些行业的失业率较高等。这些都可能会影响到明年的失业率。\nanswer：\n1.2024年宏观经济环境预测\n2.2024年政府就业政策\n3.对2024年经济的市场预期\n4.近年来失业率的趋势\n5.各行业的失业率情况"}
+{"instruction": "你是一位精通信息分析的ai助手，并且非常了解收集什么样的信息对回答问题最重要。你现在需要结合背景信息回答给定的问题，给出多个搜索query，尽可能切中要害、简介明了，以最终回答问题。\n    你需要遵守以下规则：\n    1. 搜索query是对问题的横向拆分，类似于改写问题与阅读理解。你可以对于问题更直白和细致的改写，或者通过阅读方式改写问题，每个搜索条件都需要可以直接搜索到这个问题的答案。\n    2. 请严格按照相关性，生成的内容一定是和问题高度相关。\n    3. 注意在相关的基础上，你需要从分析财经信息的一般过程出发，将生成的query按照重要性和逻辑性排序，最重要的放在最前面\n    4. 注意生成的内容要贴合问题的意图，贴合问题的主体\n    5. 根据问题和背景信息，确认问题关心的时间点，可以是具体的时间点，也可以是最新、最近、近期等描述\n    6. 如果存在背景信息，则结合背景信息\n    \n    让我们一步一步来。\n    问题是：在未来几个月内，房地产行业是否有可能实现恢复？\n    今天的日期是：2024-01-30\n    背景信息是：\n    -------------------------------\n    输出必须是按照格式:\n    suggestion：思考过程\n    answer：\n    1.\n    2.\n    3.\n    ", "output": "suggestion： 用户的问题是想了解未来几个月内房地产行业是否有可能实现恢复。这个问题涉及到对房地产行业的未来走势的预测，需要从多个维度进行分析。这些维度包括宏观环境、经济政策、产业政策、行业景气度指标、龙头企业行为、重要资讯事件以及板块估值和拥挤度等。这个问题并没有涉及到具体的公司或实体，所以不需要拆分。\nanswer：1. 未来几个月内中国的宏观经济环境预测\n2. 未来几个月内中国的经济政策对房地产行业的影响\n3. 未来几个月内中国的产业政策对房地产行业的影响\n4. 未来几个月内中国房地产行业的景气度指标预测\n5. 未来几个月内中国房地产行业龙头企业的行为分析"}
+{"instruction": "你是一位精通信息分析的ai助手，并且非常了解收集什么样的信息对回答问题最重要。你现在需要结合背景信息回答给定的问题，给出多个搜索query，尽可能切中要害、简介明了，以最终回答问题。\n    你需要遵守以下规则：\n    1. 搜索query是对问题的横向拆分，类似于改写问题与阅读理解。你可以对于问题更直白和细致的改写，或者通过阅读方式改写问题，每个搜索条件都需要可以直接搜索到这个问题的答案。\n    2. 请严格按照相关性，生成的内容一定是和问题高度相关。\n    3. 注意在相关的基础上，你需要从分析财经信息的一般过程出发，将生成的query按照重要性和逻辑性排序，最重要的放在最前面\n    4. 注意生成的内容要贴合问题的意图，贴合问题的主体\n    5. 根据问题和背景信息，确认问题关心的时间点，可以是具体的时间点，也可以是最新、最近、近期等描述\n    6. 如果存在背景信息，则结合背景信息\n    \n    让我们一步一步来。\n    问题是：未来三年新能源汽车零部件行业海外市场和国内市场战略是什么样的？\n    今天的日期是：2023-11-06\n    背景信息是：\n    -------------------------------\n    输出必须是按照格式:\n    suggestion：思考过程\n    answer：\n    1.\n    2.\n    3.\n    ", "output": "suggestion：首先，我们需要了解新能源汽车零部件行业在未来三年的国内市场战略，这涉及到行业的发展趋势、政策支持、市场需求等因素。其次，我们需要了解新能源汽车零部件行业在未来三年的海外市场战略，这涉及到行业的发展趋势、政策支持、市场需求等因素。最后，我们需要比较和分析这两个市场的战略，找出它们的相同点和不同点，以及各自的优势和挑战。\nanswer：\n1. 未来三年新能源汽车零部件行业在中国的市场战略是什么？\n2. 未来三年新能源汽车零部件行业在海外的市场战略是什么？\n3. 未来三年新能源汽车零部件行业的国内市场战略和海外市场战略有何相同之处？\n4. 未来三年新能源汽车零部件行业的国内市场战略和海外市场战略有何不同之处？\n5. 未来三年新能源汽车零部件行业在国内市场和海外市场的战略中各自的优势和挑战是什么？"}
+{"instruction": "你是一位精通信息分析的ai助手，并且非常了解收集什么样的信息对回答问题最重要。你现在需要结合背景信息回答给定的问题，给出多个搜索query，尽可能切中要害、简介明了，以最终回答问题。\n    你需要遵守以下规则：\n    1. 搜索query是对问题的横向拆分，类似于改写问题与阅读理解。你可以对于问题更直白和细致的改写，或者通过阅读方式改写问题，每个搜索条件都需要可以直接搜索到这个问题的答案。\n    2. 请严格按照相关性，生成的内容一定是和问题高度相关。\n    3. 注意在相关的基础上，你需要从分析财经信息的一般过程出发，将生成的query按照重要性和逻辑性排序，最重要的放在最前面\n    4. 注意生成的内容要贴合问题的意图，贴合问题的主体\n    5. 根据问题和背景信息，确认问题关心的时间点，可以是具体的时间点，也可以是最新、最近、近期等描述\n    6. 如果存在背景信息，则结合背景信息\n    \n    让我们一步一步来。\n    问题是：美国标普500指数最近一次的成分股调整是在什么时候？调入和调出的股票有哪些？\n    今天的日期是：2024-01-30\n    背景信息是：1.查询的时间 2.查询的对象 3.查询的结果 4.查询的原因 5.查询的影响\n    -------------------------------\n    输出必须是按照格式:\n    suggestion：思考过程\n    answer：\n    1.\n    2.\n    3.\n    ", "output": "suggestion： 用户需要了解美国标普500指数最近一次的成分股调整的时间以及调入和调出的股票，这可能是因为用户想了解标普500指数的构成变化，以便对投资策略做出调整。我们需要从两个方面来获取信息，一是标普500的成分股调整时间，二是调整的具体内容，包括调入和调出的股票。\nanswer：\n1. 最近一次美国标普500指数的成分股调整时间\n2. 最近一次美国标普500指数调整中调入的股票\n3. 最近一次美国标普500指数调整中调出的股票"}
+{"instruction": "你是一位精通信息分析的ai助手，并且非常了解收集什么样的信息对回答问题最重要。你现在需要结合背景信息回答给定的问题，给出多个搜索query，尽可能切中要害、简介明了，以最终回答问题。\n    你需要遵守以下规则：\n    1. 搜索query是对问题的横向拆分，类似于改写问题与阅读理解。你可以对于问题更直白和细致的改写，或者通过阅读方式改写问题，每个搜索条件都需要可以直接搜索到这个问题的答案。\n    2. 请严格按照相关性，生成的内容一定是和问题高度相关。\n    3. 注意在相关的基础上，你需要从分析财经信息的一般过程出发，将生成的query按照重要性和逻辑性排序，最重要的放在最前面\n    4. 注意生成的内容要贴合问题的意图，贴合问题的主体\n    5. 根据问题和背景信息，确认问题关心的时间点，可以是具体的时间点，也可以是最新、最近、近期等描述\n    6. 如果存在背景信息，则结合背景信息\n    \n    让我们一步一步来。\n    问题是：存量首套房贷利率调整对银行的影响是什么？ \n    今天的日期是：2023-11-06\n    背景信息是：\n    -------------------------------\n    输出必须是按照格式:\n    suggestion：思考过程\n    answer：\n    1.\n    2.\n    3.\n    ", "output": "suggestion：首先，我们需要理解存量首套房贷利率调整对银行的影响主要体现在哪些方面，可能包括银行的贷款收入、风险控制、资产质量等。其次，我们需要了解存量首套房贷利率的调整是如何影响这些方面的。最后，我们需要找出具体的数据或案例来支持这些影响。\nanswer：\n1.存量首套房贷利率调整对银行贷款收入的影响是什么？\n2.存量首套房贷利率调整对银行风险控制的影响是什么？\n3.存量首套房贷利率调整对银行资产质量的影响是什么？\n4.有哪些具体的数据或案例可以证明存量首套房贷利率调整对银行的影响？\n5.存量首套房贷利率调整是如何影响银行的？"}
+{"instruction": "你是一位精通信息分析的ai助手，并且非常了解收集什么样的信息对回答问题最重要。你现在需要结合背景信息回答给定的问题，给出多个搜索query，尽可能切中要害、简介明了，以最终回答问题。\n    你需要遵守以下规则：\n    1. 搜索query是对问题的横向拆分，类似于改写问题与阅读理解。你可以对于问题更直白和细致的改写，或者通过阅读方式改写问题，每个搜索条件都需要可以直接搜索到这个问题的答案。\n    2. 请严格按照相关性，生成的内容一定是和问题高度相关。\n    3. 注意在相关的基础上，你需要从分析财经信息的一般过程出发，将生成的query按照重要性和逻辑性排序，最重要的放在最前面\n    4. 注意生成的内容要贴合问题的意图，贴合问题的主体\n    5. 根据问题和背景信息，确认问题关心的时间点，可以是具体的时间点，也可以是最新、最近、近期等描述\n    6. 如果存在背景信息，则结合背景信息\n    \n    让我们一步一步来。\n    问题是：请帮我分析一下字节跳动、腾讯和阿里巴巴，这三家公司近期的收益表现，并比较他们的差异。\n    今天的日期是：2024-01-30\n    背景信息是：\n    -------------------------------\n    输出必须是按照格式:\n    suggestion：思考过程\n    answer：\n    1.\n    2.\n    3.\n    ", "output": "suggestion： 用户想了解字节跳动、腾讯和阿里巴巴这三家公司近期的收益表现以及他们之间的差异。因此，我们需要分析这三家公司近期的财务状况，包括收入、利润等财务指标，以及他们的股价表现。同时，我们也需要对比这三家公司的财务状况，找出他们的差异。由于问题涉及到三家公司，我们需要分别对这三家公司进行搜索。\nanswer：1.字节跳动近期的财务报表和收益情况\n2.腾讯近期的财务报表和收益情况\n3.阿里巴巴近期的财务报表和收益情况\n4.字节跳动、腾讯和阿里巴巴近期财务报表的对比分析\n5.字节跳动、腾讯和阿里巴巴近期收益表现的对比分析"}
+{"instruction": "你是一位精通信息分析的ai助手，并且非常了解收集什么样的信息对回答问题最重要。你现在需要结合背景信息回答给定的问题，给出多个搜索query，尽可能切中要害、简介明了，以最终回答问题。\n    你需要遵守以下规则：\n    1. 搜索query是对问题的横向拆分，类似于改写问题与阅读理解。你可以对于问题更直白和细致的改写，或者通过阅读方式改写问题，每个搜索条件都需要可以直接搜索到这个问题的答案。\n    2. 请严格按照相关性，生成的内容一定是和问题高度相关。\n    3. 注意在相关的基础上，你需要从分析财经信息的一般过程出发，将生成的query按照重要性和逻辑性排序，最重要的放在最前面\n    4. 注意生成的内容要贴合问题的意图，贴合问题的主体\n    5. 根据问题和背景信息，确认问题关心的时间点，可以是具体的时间点，也可以是最新、最近、近期等描述\n    6. 如果存在背景信息，则结合背景信息\n    \n    让我们一步一步来。\n    问题是：月薪4000，如何存5万？\n    今天的日期是：2024-01-30\n    背景信息是：\n    -------------------------------\n    输出必须是按照格式:\n    suggestion：思考过程\n    answer：\n    1.\n    2.\n    3.\n    ", "output": "suggestion：首先，这个问题是关于如何储蓄的，所以我们需要考虑的因素包括收入、支出、储蓄目标等。其次，提问者的月薪是4000，储蓄目标是5万，所以我们需要考虑的是如何在这个收入水平下达到这个储蓄目标。最后，由于这是一个金融问答app，我们可以考虑从投资的角度来解答这个问题，比如推荐一些适合提问者的投资产品或策略。\nanswer：\n1.月薪4000元的人如何制定合理的生活预算\n2.月薪4000元的人如何进行理财投资\n3.月薪4000元的人如何达到5万的储蓄目标\n4.月薪4000元的人如何选择合适的投资产品\n5.月薪4000元的人如何提高储蓄率"}
+{"instruction": "你是一位精通信息分析的ai助手，并且非常了解收集什么样的信息对回答问题最重要。你现在需要结合背景信息回答给定的问题，给出多个搜索query，尽可能切中要害、简介明了，以最终回答问题。\n    你需要遵守以下规则：\n    1. 搜索query是对问题的横向拆分，类似于改写问题与阅读理解。你可以对于问题更直白和细致的改写，或者通过阅读方式改写问题，每个搜索条件都需要可以直接搜索到这个问题的答案。\n    2. 请严格按照相关性，生成的内容一定是和问题高度相关。\n    3. 注意在相关的基础上，你需要从分析财经信息的一般过程出发，将生成的query按照重要性和逻辑性排序，最重要的放在最前面\n    4. 注意生成的内容要贴合问题的意图，贴合问题的主体\n    5. 根据问题和背景信息，确认问题关心的时间点，可以是具体的时间点，也可以是最新、最近、近期等描述\n    6. 如果存在背景信息，则结合背景信息\n    \n    让我们一步一步来。\n    问题是：深入分析上海住户存款增加的影响是什么？\n    今天的日期是：2023-10-23\n    背景信息是：\n    -------------------------------\n    输出必须是按照格式:\n    suggestion：思考过程\n    answer：\n    1.\n    2.\n    3.\n    ", "output": "suggestion：首先，我们需要了解上海住户存款增加的具体情况，包括增加的幅度、时间等。其次，我们需要了解存款增加对上海的经济环境产生了什么影响，比如是否推动了消费，是否影响了房地产市场等。最后，我们还需要了解存款增加对上海住户自身的影响，比如是否改变了他们的消费习惯，是否影响了他们的投资决策等。\n\nanswer：\n1. 上海住户存款增加的具体情况是什么？\n2. 上海住户存款增加对上海的经济环境产生了什么影响？\n3. 上海住户存款增加对上海住户自身的影响是什么？\n4. 上海住户存款增加是否推动了消费？\n5. 上海住户存款增加是否影响了房地产市场？"}
+
diff --git a/docs/guidebook/_picture/data_agent_dataset.png b/docs/guidebook/_picture/data_agent_dataset.png
new file mode 100644
index 00000000..a9e3e3cf
Binary files /dev/null and b/docs/guidebook/_picture/data_agent_dataset.png differ
diff --git a/docs/guidebook/_picture/data_agent_dataset_en.png b/docs/guidebook/_picture/data_agent_dataset_en.png
new file mode 100644
index 00000000..4e710412
Binary files /dev/null and b/docs/guidebook/_picture/data_agent_dataset_en.png differ
diff --git a/docs/guidebook/_picture/data_agent_eval_report.png b/docs/guidebook/_picture/data_agent_eval_report.png
new file mode 100644
index 00000000..26db9d77
Binary files /dev/null and b/docs/guidebook/_picture/data_agent_eval_report.png differ
diff --git a/docs/guidebook/_picture/data_agent_eval_report_en.png b/docs/guidebook/_picture/data_agent_eval_report_en.png
new file mode 100644
index 00000000..2f926b19
Binary files /dev/null and b/docs/guidebook/_picture/data_agent_eval_report_en.png differ
diff --git a/docs/guidebook/_picture/data_agent_eval_report_en_qwen7b.png b/docs/guidebook/_picture/data_agent_eval_report_en_qwen7b.png
new file mode 100644
index 00000000..d1f9a4cb
Binary files /dev/null and b/docs/guidebook/_picture/data_agent_eval_report_en_qwen7b.png differ
diff --git a/docs/guidebook/_picture/data_agent_eval_report_qwen72b.png b/docs/guidebook/_picture/data_agent_eval_report_qwen72b.png
new file mode 100644
index 00000000..19c453de
Binary files /dev/null and b/docs/guidebook/_picture/data_agent_eval_report_qwen72b.png differ
diff --git a/docs/guidebook/_picture/data_agent_eval_result.png b/docs/guidebook/_picture/data_agent_eval_result.png
new file mode 100644
index 00000000..d039405d
Binary files /dev/null and b/docs/guidebook/_picture/data_agent_eval_result.png differ
diff --git a/docs/guidebook/_picture/data_agent_eval_result_en.png b/docs/guidebook/_picture/data_agent_eval_result_en.png
new file mode 100644
index 00000000..45a29f2d
Binary files /dev/null and b/docs/guidebook/_picture/data_agent_eval_result_en.png differ
diff --git a/docs/guidebook/_picture/data_agent_flowchart.jpg b/docs/guidebook/_picture/data_agent_flowchart.jpg
new file mode 100644
index 00000000..cfdd0bfe
Binary files /dev/null and b/docs/guidebook/_picture/data_agent_flowchart.jpg differ
diff --git a/docs/guidebook/_picture/long_translation_au.png b/docs/guidebook/_picture/long_translation_au.png
new file mode 100644
index 00000000..a9cd0fe5
Binary files /dev/null and b/docs/guidebook/_picture/long_translation_au.png differ
diff --git a/docs/guidebook/_picture/long_translation_wu.png b/docs/guidebook/_picture/long_translation_wu.png
new file mode 100644
index 00000000..e223a3d7
Binary files /dev/null and b/docs/guidebook/_picture/long_translation_wu.png differ
diff --git a/docs/guidebook/_picture/translation_execute_flow.png b/docs/guidebook/_picture/translation_execute_flow.png
new file mode 100644
index 00000000..097c39ea
Binary files /dev/null and b/docs/guidebook/_picture/translation_execute_flow.png differ
diff --git a/docs/guidebook/_picture/translation_flow_graph.png b/docs/guidebook/_picture/translation_flow_graph.png
new file mode 100644
index 00000000..122de458
Binary files /dev/null and b/docs/guidebook/_picture/translation_flow_graph.png differ
diff --git a/docs/guidebook/_picture/wechat_official.png b/docs/guidebook/_picture/wechat_official.png
new file mode 100644
index 00000000..dc187c18
Binary files /dev/null and b/docs/guidebook/_picture/wechat_official.png differ
diff --git a/docs/guidebook/en/0_index.md b/docs/guidebook/en/0_index.md
index ff85fc87..b17701c7 100644
--- a/docs/guidebook/en/0_index.md
+++ b/docs/guidebook/en/0_index.md
@@ -42,6 +42,9 @@
   * 2.4.4 Logging
     * 2.4.4.1 [Logging Component](2_6_Logging_Utils.md)
   * 2.4.5 Data Collection
+    * 2.4.5.1 [Monitor Module](2_5_1_Monitor_Module.md)
+  * 2.4.6 Data Autonomous
+    * 2.4.6.1 [Data Autonomous Agent](8_1_1_data_autonomous_agent.md)
 
 **3. Component Reference Manual**
 * 3.1 Domain Components
@@ -54,7 +57,11 @@
     * 3.1.2.5 [BaiChuan Usage Instructions](3_1_2_BaiChuan_LLM_Use.md)
     * 3.1.2.6 [Claude Usage Instructions](3_1_2_Claude_LLM_Use.md)
     * 3.1.2.7 [Ollama Usage Instructions](3_1_2_Ollama_LLM_Use.md)
+    * 3.1.2.8 [DeepSeek Usage Instructions](3_1_2_DeepSeek_LLM_Use.md)
+    * 3.1.2.9 [General OpenAI Protocol Style Wrapper](3_1_2_OpenAIStyleLLM_Use.md)
   * 3.1.3 List of Tools
+    * 3.1.3.1 [Integration Tool Details](2_2_3_Integrated_Tools.md)
+    * 3.1.3.2 [LangChain Tool Wrapper](2_2_3_Integrated_LangChain_Tools.md)
   * 3.1.4 List of Knowledge
   * 3.1.5 List of Memories
   * 3.1.6 List of Planners
@@ -84,9 +91,12 @@
 * 6.3 [Discussion Group Based on Multi-Turn Multi-Agent Mode](6_2_1_Discussion_Group.md)
 * 6.4 PEER Multi-Agent Cooperation Examples
   * 6.4.1 [Financial Event Analysis Case](./6_4_1_Financial_Event_Analysis_Case.md)
+* 6.5 [Andrew Ng's Reflexive Workflow Translation Agent Replication](./7_1_1_Translation_Case.md)
 
 **7. Series of Articles**
 
 **8. Frequently Asked Questions (FAQ)**
 
-**[9. Contact Us](6_1_Contact_Us.md)**
+**[9.Citation](9_1_Citation.md)**
+
+**[10. Contact Us](6_1_Contact_Us.md)**
diff --git a/docs/guidebook/en/1_Core_Features.md b/docs/guidebook/en/1_Core_Features.md
new file mode 100644
index 00000000..92d7f23e
--- /dev/null
+++ b/docs/guidebook/en/1_Core_Features.md
@@ -0,0 +1,12 @@
+# Core Features
+* **Agent-Oriented Design:** The framework is designed with agents in mind, customizing agents through the perception, planning, action, and memory modules.
+* **Rich Multi-Agent Collaboration Modes:** Offers industry-validated collaboration modes such as PEER (Plan/Execute/Express/Review) and DOE (Data-fining/Opinion-inject/Express), and supports user-defined orchestration of new modes, enabling organic collaboration among multiple agents.
+* **Customizable Components:** All framework components, including LLM, knowledge, tools, and memory, are customizable, allowing users to enhance their dedicated agents.
+* **Seamless Integration of Domain Expertise:** Provides capabilities for domain-specific prompts, knowledge construction and management, and supports domain-level SOP orchestration and embedding to align agents to expert levels in their fields.
+* **Multi-LLM and Extensible:** Built-in support for multiple models such as the OpenAI series, Qwen series, Baichuan series, Kimi series, etc., while offering standard extensions to integrate any third-party model services and privately deployed models.
+* **Multi-Data Source and Extensible:** Supports various data sources, whether traditional ones like SQLite, MySQL, Oracle, or vector databases like ChromaDB, Milvu. It also provides standard extension methods to integrate any third-party data services and other databases.
+* **Convenient Ecosystem Integration:** The framework integrates mature and practically tested large model application ecosystem capabilities, shielding most of the underlying configurations and implementations. This includes LLM ecosystem components like LangChain, llama_index, as well as technical components like Grpc and SLS.
+* **Observable and Feedback Capable:** With the monitor component, all service interactions and model interactions within agentUniverse can be recorded and observed. Combined with the framework's automatic agent evaluation capabilities, you can easily grasp the performance gains from agent or model iterations and feed them back into service iterations and model training.
+* **Enterprise Private Component Extensions:** The framework offers a private technical component extension and loading mechanism, allowing internal components like self-developed RPC protocol components, messaging components, and logging components to be integrated via configuration.
+* **One-Click Service Deployment:** Supports one-click startup of a web server through the capabilities of Flask and Gunicorn, making it easy to integrate agent capabilities into any existing system.
+* **Standard Container Delivery:** Provides a standard Docker image and offers recommended integration solutions based on Docker and Kubernetes (K8S) capabilities.
\ No newline at end of file
diff --git a/docs/guidebook/en/1_Why_Use_agentUniverse.md b/docs/guidebook/en/1_Why_Use_agentUniverse.md
new file mode 100644
index 00000000..3c91c45f
--- /dev/null
+++ b/docs/guidebook/en/1_Why_Use_agentUniverse.md
@@ -0,0 +1,10 @@
+# Why Use agentUniverse
+With agentUniverse, you can easily build powerful collaborative agents that perform at an expert level in their respective domains.
+
+agentUniverse provides all the essential components for building single agents. All visible components are extensible and customizable, allowing them to seamlessly connect with large model ecosystem components and middleware, helping you build powerful single agents.
+
+agentUniverse features a rich set of multi-agent collaboration capabilities. Different collaboration modes are specialized in solving domain-specific problems, with multi-agents playing different roles and working together towards a common goal. This greatly enhances the agents' performance in completing tasks.
+
+agentUniverse focuses on the construction and management of domain prompts, domain knowledge, and domain SOPs. Through these capabilities, domain expertise is infused into the collaborative work of all agents, ensuring that agents have expert-level proficiency in specific domains.
+
+In addition, agentUniverse already has numerous industry-grade products and practices in the financial sector. We will share and open up collaboration modes, domain expertise, and solutions that have been validated in the financial industry as case studies.
\ No newline at end of file
diff --git a/docs/guidebook/en/2_2_2_LLM_component_define_and_usage.md b/docs/guidebook/en/2_2_2_LLM_component_define_and_usage.md
index 1d2f76b9..bf49694f 100644
--- a/docs/guidebook/en/2_2_2_LLM_component_define_and_usage.md
+++ b/docs/guidebook/en/2_2_2_LLM_component_define_and_usage.md
@@ -467,7 +467,7 @@ module: 'agentuniverse.llm.default.default_openai_llm'
 class: 'DefaultOpenAILLM'
 ```
 
-If we need to configure and define an LLM instance based on the `gpt-3.5-turbo model`, with a maximum token limit of 1000 and a retry count of 2 for failures, the configuration would be as follows:
+If we need to configure and define an LLM instance based on the `gpt-3.5-turbo model`, with a maximum token limit of 1000 and a retry count is 2, the configuration would be as follows:
 ```yaml
 name: 'demo_llm'
 description: 'demo openai'
diff --git a/docs/guidebook/en/2_2_3_Integrated_LangChain_Tools.md b/docs/guidebook/en/2_2_3_Integrated_LangChain_Tools.md
new file mode 100644
index 00000000..fcaba8f4
--- /dev/null
+++ b/docs/guidebook/en/2_2_3_Integrated_LangChain_Tools.md
@@ -0,0 +1,83 @@
+# Integrated LangChain Tool
+
+Based on the level of difficulty in initializing tool objects in LangChain, they can be divided into two categories:
+The first category involves simple initialization, where initialization can be completed with basic parameter configuration.
+The second category involves complex initialization with intricate internal objects that need to be set up.
+For the first category of tools, you can use configuration files in aU to directly perform initialization, such as initializing the DuDuckGo search tool.
+For the second category of tools, we have implemented a LangChainTool base class. You only need to implement the init_langchain_tool method of this class to initialize the corresponding LangChain tool objects, with reference to the initialization method of Wikipedia.
+
+Note: If you want to directly use the description from LangChain, the description in the configuration file must be set to empty.
+
+An Example of Tool Initialization:
+[Tool Address](../../../sample_standard_app/app/core/tool/langchain_tool/human_input_run.yaml)
+```yaml
+name: 'human_input_run'
+description: ''
+tool_type: 'api'
+input_keys: ['input']
+langchain:
+  module: langchain_community.tools
+  class_name: HumanInputRun
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.langchain_tool'
+  class: 'LangChainTool'
+```
+Parameter Description:
+    langchain: The LangChain tool you intend to use, which requires the configuration of module and class_name.
+    langchain.module: The name of the LangChain module, e.g., langchain_community.tools.
+    langchain.class_name: The name of the LangChain class, e.g., HumanInputRun.
+    langchain.init_params: The initialization parameters for LangChain, such as:
+        ```yaml
+        langchain:
+          module: langchain_community.tools
+          class_name: HumanInputRun
+          init_params:
+            prompt: 'please Input your question'
+        ```
+    If you completely override the `init_langchain_tool` method, then you do not need to configure this part.
+
+## 1. Integrate the DuckDuckGo Tool from LangChain
+[Tool Address](../../../sample_standard_app/app/core/tool/langchain_tool/duckduckgo_search.yaml)
+```yaml
+name: 'duckduckgo_search'
+description: 'DuckDuckGo Search tool'
+tool_type: 'api'
+input_keys: ['input']
+langchain:
+  module: langchain.tools
+  class_name: DuckDuckGoSearchResults
+  init_params:
+    backend: news
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.langchain_tool.langchain_tool'
+  class: 'LangChainTool'
+```
+This tool can be used directly without any keys.
+
+## 2.Integrate Wikipedia Search
+Since the definition of LangChain includes an api_wrapper object, define the object file and override the initialization method:
+```python
+from langchain_community.tools import WikipediaQueryRun
+from langchain_community.utilities import WikipediaAPIWrapper
+
+from sample_standard_app.app.core.tool.langchain_tool.langchain_tool import LangChainTool
+
+
+class WikipediaTool(LangChainTool):
+    def init_langchain_tool(self, component_configer):
+        wrapper = WikipediaAPIWrapper()
+        return WikipediaQueryRun(api_wrapper=wrapper)
+```
+Define Configuration:
+```yaml
+name: 'wikipedia_query'
+description: ''
+tool_type: 'api'
+input_keys: ['input']
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.langchain_tool.wikipedia_query'
+  class: 'WikipediaTool'
+```
\ No newline at end of file
diff --git a/docs/guidebook/en/2_2_3_Integrated_Tools.md b/docs/guidebook/en/2_2_3_Integrated_Tools.md
new file mode 100644
index 00000000..6db58fe8
--- /dev/null
+++ b/docs/guidebook/en/2_2_3_Integrated_Tools.md
@@ -0,0 +1,189 @@
+# Integrated Tools
+
+In the current au's sample project, the following tools are integrated.
+
+## 1. Search Tools
+
+### 1.1 Google Search
+[工具地址](../../../sample_standard_app/app/core/tool/google_search_tool.yaml)  
+Detailed Configuration Information:
+
+```yaml
+name: 'google_search_tool'
+description: |
+  This tool can be used to perform Google searches. The tool's input is the content you want to search for.
+  Example inputs for the tool:
+    Example 1: If you want to search for the weather in Shanghai, the tool's input should be: "Shanghai weather today"
+    Example 2: If you want to search for the weather in Japan, the tool's input should be: "Japan weather"
+tool_type: 'api'
+input_keys: ['input']
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.google_search_tool'
+  class: 'GoogleSearchTool'
+```
+To use this API, you must apply for a BING_SUBSCRIPTION_KEY at https://serper.dev and configure it in your environment variables. 
+Configuration method:
+1. Configure via Python code You must configure: SERPER_API_KEY
+```python
+import os
+os.environ['SERPER_API_KEY'] = 'xxxx'
+```
+2. Configure via configuration file In the custom_key.toml file located in the config directory of the project, add the configuration:  
+```toml
+SERPER_API_KEY="xxxx"
+```
+
+
+### 1.2 Bing Search 
+Currently, it integrates with the official Bing search.
+[工具地址](../../../sample_standard_app/app/core/tool/bing_search_tool.yaml)  
+Tool configuration:
+```yaml
+name: 'bing_search_tool'
+description: 'demo bing search tool'
+tool_type: 'api'
+input_keys: ['input']
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.bing_search_tool'
+  class: 'BingSearchTool'
+```
+To use this API, you must apply for BING_SUBSCRIPTION_KEY and configure it in environment variables. 
+Configuration method:
+1. Configure through Python code
+Mandatory configuration: BING_SUBSCRIPTION_KEY
+```python
+import os
+os.environ['BING_SUBSCRIPTION_KEY'] = 'xxxx'
+```
+2. Configure through configuration file
+In custom_key.toml under config directory of the project, add configuration:
+```toml
+BING_SUBSCRIPTION_KEY="xxxx"
+```
+
+
+
+### 1.3 Search API
+Supports multiple search tools, such as: 
+- [Baidu search](../../../sample_standard_app/app/core/tool/search_api_baidu_tool.yaml)
+- [Bing search](../../../sample_standard_app/app/core/tool/search_api_bing_tool.yaml)  
+Other search engines also include: Google search, Amazon search, YouTube search, etc. For more information, please refer to: https://www.searchapi.io/
+Tool configuration:
+```yaml
+name: 'search_api_baidu_tool'
+description: 'Baidu (Bing) search tool, input is a string of content to be searched, e.g.: input="What is the price of gold?"'
+tool_type: 'api'
+input_keys: ['input']
+engine: 'baidu'
+search_type: 'json'
+search_params:
+  num: 10
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.search_api_tool'
+  class: 'SearchAPITool'
+```
+Parameter description:
+
+search_type: Represents the format of the expected search results, where json represents the expectation for JSON format and common represents the expectation for string string format.
+search_params: Represents additional parameters that need to be passed to the search engine, such as in Baidu search, num represents the number of returned search results, detailed parameters need to be referenced at [https://www.searchapi.io/].
+engine: The search engine you expect to use, including baidu, google, bing, amazon, youtube, ... To use this API, you must apply for SEARCH_API_KEY from the official website ([https://www.searchapi.io/]) and configure it in environment variables.
+Configuration method:
+You must configure：SEARCHAPI_API_KEY
+1. Configure via Python code :
+```python
+import os
+os.environ['SEARCHAPI_API_KEY'] = 'xxxxxx'
+```
+2. Configure through configuration file
+Add configuration in custom_key.toml under the config directory of the project:
+```toml
+SEARCHAPI_API_KEY="xxxxxx"
+```
+
+
+## 2. Code Tool
+
+### 2.1 PythonRepl
+[Tool address](../../../sample_standard_app/app/core/tool/python_repl_tool.yaml)  
+This tool can execute a piece of Python code, the configuration information of the tool:  
+```yaml
+name: 'python_runner'
+description: 'The tool can execute Python code, which can be directly run in PyCharm. The input to the tool must be valid Python code. If you want to view the execution result of the tool, you must use print(...) to print the content you want to view in the Python code.
+  Example of tool input:
+    When you want to calculate what 1 + 3 equals, the input to the tool should be:
+        ```py 
+        print(1+3)
+        ```
+      When you want to get information about the Baidu page, the input to the tool should be:
+        ```py 
+        import requests
+        resp=requests.get("https://www.baidu.com")
+        print(resp.content)
+        ```'
+tool_type: 'api'
+input_keys: ['input']
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.python_repl'
+  class: 'PythonREPLTool'
+```
+
+This tool can be used directly without any key, but for system security, please do not use this tool in production environments.
+
+
+## 3.HTTP Tool
+
+### 3.1 HTTP GET
+[Tool address](../../../sample_standard_app/app/core/tool/request_get_tool.yaml)
+The tool can send a GET request, with its configuration information being:
+```yaml
+name: 'requests_get'
+description: 'A portal to the internet. Use this when you need to get specific
+    content from a website. Input should be a  url (i.e. https://www.google.com).
+    The output will be the text response of the GET request.
+        ```'
+headers:
+  content-type: 'application/json'
+method: 'POST'
+json_parser: true
+response_content_type: json
+tool_type: 'api'
+input_keys: ['input']
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.request_tool'
+  class: 'RequestTool'
+```
+Configuration to Refer to When Sending a POST Request：
+```yaml
+name: 'requests_post'
+# description copy from langchain RequestPOSTTool
+description: 'Use this when you want to POST to a website.
+    Input should be a json string with two keys: "url" and "data".
+    The value of "url" should be a string, and the value of "data" should be a dictionary of 
+    key-value pairs you want to POST to the url.
+    Be careful to always use double quotes for strings in the json string
+    The output will be the text response of the POST request.
+        ```'
+headers:
+  content-type: 'application/json'
+method: 'POST'
+json_parser: true
+response_content_type: json
+tool_type: 'api'
+input_keys: ['input']
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.request_tool'
+  class: 'RequestTool'
+```
+Parameter Description:
+    method: The method of the request, such as GET, POST, PUT, etc.
+    headers: The HTTP headers required for sending the request.
+    json_parse: Specifies whether the input parameters need to be parsed by HTTP. It should be set to True for POST requests and False for GET requests.
+    response_content_type: The parsing method for the HTTP request result. If set to 'json', the result will be returned in JSON format; if set to 'text', the result will be returned as text.
+This tool can be used directly without any keys required.
+
diff --git a/docs/guidebook/en/2_2_5_Memory_Define_And_Use.md b/docs/guidebook/en/2_2_5_Memory_Define_And_Use.md
index 52d08d89..63ac2b36 100644
--- a/docs/guidebook/en/2_2_5_Memory_Define_And_Use.md
+++ b/docs/guidebook/en/2_2_5_Memory_Define_And_Use.md
@@ -62,7 +62,7 @@ You can get the Memory instance corresponding to its name using the `.get_instan
 ```python
 from agentuniverse.agent.memory.memory_manager import MemoryManager
 
-memory = MemoryManager().get_instance_obj(component_instance_name=memory_name, new_instance=True)
+memory = MemoryManager().get_instance_obj(component_instance_name=memory_name)
 ```
 
 # Conclusion
diff --git a/docs/guidebook/en/2_5_1_Monitor_Module.md b/docs/guidebook/en/2_5_1_Monitor_Module.md
new file mode 100644
index 00000000..57201e24
--- /dev/null
+++ b/docs/guidebook/en/2_5_1_Monitor_Module.md
@@ -0,0 +1,201 @@
+# Monitor Module
+
+agentUniverse monitor module, mainly around the agent runtime LLM invocation/token expenses for data tracking and
+recording. In this document, we will provide a detailed introduction on how to use the **LLM and Agent invocation tracking
+capabilities** that are currently open in the agentUniverse.
+
+## Monitor Configuration
+
+Configure the monitor module settings in the main configuration file `config.toml` of agentUniverse, as follows:
+
+```toml
+[MONITOR]
+activate = true
+dir = './monitor'
+```
+
+- **`activate`**: The master switch for the monitor module is set to off by default. When set to true, it will turn on
+  the LLM and Agent invocation tracking functions.
+- **`dir`**: The local storage directory corresponding to the monitor module is, by default, the 'monitor' directory one
+  level above the runtime directory. Users can customize the configuration of the directory path.
+
+### LLM Tracing Configuration
+
+For the LLM invocation tracking capability, agentUniverse also supports model granularity configuration. Once the main
+switch of the monitor module is turned on, the invocation tracking function for specific models can be selectively
+disabled through the LLM's yaml file.
+
+For example, for a user-defined model such as `demo_llm`, if the tracing is set to false, then the invocation tracking
+function for this model will be turned off.
+
+```yaml
+name: 'demo_llm'
+description: 'demo openai'
+model_name: 'gpt-4o'
+max_tokens: 1000
+max_retries: 2
+tracing: false
+metadata:
+  type: 'LLM'
+  module: 'agentuniverse.llm.default.default_openai_llm'
+  class: 'DefaultOpenAILLM'
+```
+
+Special note: In the main configuration file of agentUniverse, the monitor module's master switch has the **highest
+priority**. If the `activate` configuration is set to false, the model granularity configuration will not take effect.
+
+### Agent Tracing Configuration
+
+For the agent invocation tracking capability, agentUniverse also supports agent granularity configuration. Once the main
+switch of the monitor module is turned on, the invocation tracking function for specific agent can be selectively
+disabled through the agent's yaml file.
+
+For example, for a user-defined agent such as `demo_agent`, if the tracing is set to false, then the invocation tracking
+function for this agent will be turned off.
+
+```yaml
+info:
+  name: 'demo_agent'
+  description: 'demo agent'
+profile:
+  tracing: false
+  prompt_version: demo_agent_prompt.cn
+  llm_model:
+    name: 'qwen_llm'
+plan:
+  planner:
+    name: 'rag_planner'
+action:
+  tool:
+    - 'google_search_tool'
+memory:
+  name: ''
+metadata:
+  type: 'AGENT'
+  module: 'sample_standard_app.app.core.agent.rag_agent_case.demo_rag_agent'
+  class: 'DemoRagAgent'
+```
+
+Special note: In the main configuration file of agentUniverse, the monitor module's master switch has the **highest
+priority**. If the `activate` configuration is set to false, the agent granularity configuration will not take effect.
+
+
+## Monitor Module Introduction
+
+### LLM Invocation Tracking
+
+If the user utilizes the **default model class** supported by the agentUniverse, the feature can be used after the
+configuration as described above is completed.
+
+#### trace_llm Decorator
+
+If a user customizes the extension based on the agentUniverse's model base class `LLM` to implement a custom model
+invocation, it is necessary to add the `@trace_llm` decorator to the call/acall method of the custom model class.
+
+Custom model example code as follows:
+
+```python
+from typing import Any, Iterator, Union, AsyncIterator
+
+from agentuniverse.llm.llm import LLM, LLMOutput
+from agentuniverse.base.annotation.trace import trace_llm
+
+
+class DemoLLM(LLM):
+
+    @trace_llm
+    def call(self, messages: list, **kwargs: Any) -> Union[LLMOutput, Iterator[LLMOutput]]:
+        pass
+
+    @trace_llm
+    async def acall(self, *args: Any, **kwargs: Any) -> Union[LLMOutput, AsyncIterator[LLMOutput]]:
+        pass
+```
+
+agentUniverse implements the `@trace_llm` decorator, which, when the agent calls the corresponding LLM call/acall
+methods, collects the model's prompt and response, serializes the information into JSON, and stores it in the local
+storage directory corresponding to the monitor configuration in the form of a jsonl file, divided by the hour.
+
+#### Demo Effect
+
+Call the `demo_rag_agent` in the sample project of agentUniverse, using the gpt-4o model, with the query to analyze the
+reasons behind Warren Buffett's reduction of his stake in BYD. The model invocation tracking function captures the
+following data:
+
+```json
+{
+  "source": "DefaultOpenAILLM.acall",
+  "date": "2024-06-24 16:27:14",
+  "llm_input": {
+    "messages": [
+      {
+        "role": "system",
+        "content": "You are an AI assistant proficient in information analysis.\nYour goal is to determine whether the corresponding answers to the questions provide valuable information, and to make suggestions and evaluations on the answers to the questions."
+      },
+      {
+        "role": "user",
+        "content": "The rules you need to follow are:\n1. You must answer the user's questions using English, combining the background information of the query with the knowledge you possess.\n2. Generate structured answers, and use blank lines to enhance the reading experience when necessary.\\n the question needs to be answered is: the reasons behind Warren Buffett's reduction of his stake in BYD\\n"
+      }
+    ]
+  },
+  "kwargs": {
+    "model": "gpt-4o",
+    "stream": false,
+    "n": 1,
+    "temperature": 0.5,
+    "max_tokens": 1000
+  },
+  "llm_output": "Reasons Behind Warren Buffett's Reduction of His Stake in BYD\n\nWarren Buffett, through his company Berkshire Hathaway, has been reducing his stake in BYD since August 24, 2022. There are several potential reasons behind this decision:\n\n1. **Portfolio Rebalancing**:\n   - **Investment Strategy**: Buffett is known for his long-term investment strategy and value investing. Reducing his stake in BYD could be part of a broader portfolio rebalancing effort to diversify or allocate capital to other investment opportunities.\n   - **Profit Realization**: Given that Buffett's initial investment in BYD has appreciated significantly (approximately 31 times the initial value), selling some shares allows him to realize substantial profits.\n\n2. **Market Conditions**:\n   - **Stock Performance**: Despite the reduction in stake, BYD's stock price has remained relatively stable. This suggests that Buffett's decision to sell shares is not necessarily a reflection of a negative outlook on the company's stock performance.\n   - **Economic Factors**: The broader economic environment, including interest rates, inflation, and market volatility, may influence investment decisions. Buffett might be adjusting his holdings in response to these macroeconomic factors.\n\n3. **Company Evaluation**:\n   - **Intrinsic Value**: Buffett's investment philosophy focuses on the intrinsic value of a company rather than short-term stock price movements. He might believe that the current market price of BYD reflects its intrinsic value, prompting a partial exit.\n   - **Sector Analysis**: While BYD remains a leading player in the Chinese electric vehicle (EV) market, Buffett might be evaluating the competitive landscape and future growth prospects, leading to a strategic reduction in holdings.\n\n"
+}
+```
+
+- **`source`**: the source of LLM invocation during agent runtime.
+- **`date`**: LLM invocation time
+- **`llm_input`**: LLM invocation messages and model parameters
+- **`llm_output`**: LLM output text
+
+### Agent Invocation Tracking
+
+#### trace_agent Decorator
+
+agentUniverse implements the `@trace_agent` decorator, which, when the agent calls the run
+method, collects the agent's input and output parameters, serializes the information into JSON, and stores it in the local
+storage directory corresponding to the monitor configuration in the form of a jsonl file, divided by the hour and the specific agent.
+
+#### Demo Effect
+
+Call the `demo_rag_agent` in the sample project of agentUniverse, using the gpt-4o model, with the query to analyze the
+reasons behind Warren Buffett's reduction of his stake in BYD. The agent invocation tracking function captures the
+following data:
+
+```json
+{
+  "source": "demo_rag_agent", 
+  "date": "2024-06-28 12:12:17", 
+  "agent_input": {
+    "kwargs": {
+      "input": "analyze the reasons behind Warren Buffett's reduction of his stake in BYD"
+    }
+  }, 
+  "agent_output": {
+    "chat_history": [
+      {
+        "content": "analyze the reasons behind Warren Buffett's reduction of his stake in BYD", 
+        "type": "human"
+      }, 
+      {
+        "content": "### Analysis of Warren Buffett's Reduction in Stake in BYD\n\nWarren Buffett, through his investment conglomerate Berkshire Hathaway, has been gradually reducing his stake in BYD Company Limited, a major player in the electric vehicle (EV) market. Here are the key reasons behind this strategic move:\n\n#### 1. Profit-Taking\n\n**Initial Investment vs. Current Valuation:**\n- **Initial Investment:** Berkshire Hathaway first bought about 225 million shares of Shenzhen-based BYD in 2008.\n- **Current Sale:** Recently, Berkshire sold nearly 2.02 million Hong Kong-listed shares of BYD at $234.57 apiece.\n\nGiven the significant appreciation in the value of BYD shares since the initial investment, it is plausible that Berkshire Hathaway is looking to realize profits from this long-term investment.\n\n#### 2. Portfolio Management\n\n**Stake Reduction:**\n- **Previous Stake:** Berkshire Hathaway's stake in BYD was previously 7%.\n- **Current Stake:** The sale has reduced the stake to 5.99%.\n\nReducing the stake in BYD allows Berkshire Hathaway to prune its portfolio, potentially reallocating resources to other investment opportunities or maintaining a diversified portfolio.\n\n#### 3. Market Performance and Strategic Positioning\n\n**Market Analysis:**\n- BYD, along with Tesla, is a leading player in the global electric vehicle market. However, market dynamics and competition are constantly evolving. Berkshire Hathaway's decision to reduce its stake could be influenced by an analysis of market performance and future growth prospects.\n\n**Value Investing:**\n- Warren Buffett is known for his value investing strategy. The timing of the BYD share sale may align with Buffett's assessment of the company's current valuation relative to its future growth potential.\n\n### Conclusion\n\nWarren Buffett's reduction in his stake in BYD appears to be a strategic decision influenced by multiple factors, including profit-taking, portfolio management, and an analysis of market performance. This move aligns with Berkshire Hathaway's broader investment strategy and reflects a calculated approach to managing its investments in a dynamic global market.", 
+        "type": "ai"
+      }],
+    "background": "Warren Buffett's Berkshire Hathaway may have sold BYD to take profits, free up cash, prune its portfolio, cut its geopolitical risk, ... Missing: analyze | Show results with:analyze. Explore Berkshire Hathaway's gradual divestment from BYD, analyzing geopolitical tensions, market performance, and strategic positioning. According to various media reports and analysis, Warren Buffett's reduction of shareholdings in BYD Company Limited may be due to various ... Berkshire sold nearly 2.02 million Hong Kong-listed shares of BYD at $234.57 apiece, dropping its stake from 6.18% to 5.99%. The disposal was ... Warren Buffett's Berkshire Hathaway has further cut its large stake in BYD, which vies with Tesla as the world's largest electric car (EV) maker ... Missing: analyze | Show results with:analyze. The sale reduced Berkshire's holding to 6.9%, from 7%. The conglomerate first bought about 225 million shares of Shenzhen-based BYD in 2008 for ... According to HKEX disclosure, Warren Buffett's investment flagship Berkshire Hathaway reduced its stake in BYD COMPANY (01211. Warren Buffett's Berkshire Hathaway Inc. (NYSE:BRK)(NYSE:BRK) is reducing its stake in BYD Co., Ltd. (OTC:BYDDY) (OTC:BYDDF) to less than 6%. The odd timing of the BYD share sale has less to do with Buffett's outlook on the Chinese EV maker and more to do with 'value investing.' Investment mogul Warren Buffett has quickened the reduction of his stake in Chinese electric vehicle-maker BYD, selling holdings in the firm ...", 
+    "date": "2024-06-28", 
+    "input": "analyze the reasons behind Warren Buffett's reduction of his stake in BYD", 
+    "output": "### Analysis of Warren Buffett's Reduction in Stake in BYD\n\nWarren Buffett, through his investment conglomerate Berkshire Hathaway, has been gradually reducing his stake in BYD Company Limited, a major player in the electric vehicle (EV) market. Here are the key reasons behind this strategic move:\n\n#### 1. Profit-Taking\n\n**Initial Investment vs. Current Valuation:**\n- **Initial Investment:** Berkshire Hathaway first bought about 225 million shares of Shenzhen-based BYD in 2008.\n- **Current Sale:** Recently, Berkshire sold nearly 2.02 million Hong Kong-listed shares of BYD at $234.57 apiece.\n\nGiven the significant appreciation in the value of BYD shares since the initial investment, it is plausible that Berkshire Hathaway is looking to realize profits from this long-term investment.\n\n#### 2. Portfolio Management\n\n**Stake Reduction:**\n- **Previous Stake:** Berkshire Hathaway's stake in BYD was previously 7%.\n- **Current Stake:** The sale has reduced the stake to 5.99%.\n\nReducing the stake in BYD allows Berkshire Hathaway to prune its portfolio, potentially reallocating resources to other investment opportunities or maintaining a diversified portfolio.\n\n#### 3. Market Performance and Strategic Positioning\n\n**Market Analysis:**\n- BYD, along with Tesla, is a leading player in the global electric vehicle market. However, market dynamics and competition are constantly evolving. Berkshire Hathaway's decision to reduce its stake could be influenced by an analysis of market performance and future growth prospects.\n\n**Value Investing:**\n- Warren Buffett is known for his value investing strategy. The timing of the BYD share sale may align with Buffett's assessment of the company's current valuation relative to its future growth potential.\n\n### Conclusion\n\nWarren Buffett's reduction in his stake in BYD appears to be a strategic decision influenced by multiple factors, including profit-taking, portfolio management, and an analysis of market performance. This move aligns with Berkshire Hathaway's broader investment strategy and reflects a calculated approach to managing its investments in a dynamic global market."
+  }
+}
+```
+
+- **`source`**: the Agent name.
+- **`date`**: Agent invocation time
+- **`llm_input`**: Agent invocation input parameters
+- **`llm_output`**: Agent output parameters
\ No newline at end of file
diff --git a/docs/guidebook/en/3_1_2_0_List_Of_LLMs.md b/docs/guidebook/en/3_1_2_0_List_Of_LLMs.md
index a56aa83f..c283b92b 100644
--- a/docs/guidebook/en/3_1_2_0_List_Of_LLMs.md
+++ b/docs/guidebook/en/3_1_2_0_List_Of_LLMs.md
@@ -10,6 +10,9 @@ The platform has currently integrated the following list of models; please refer
 | [BaiChuan](3_1_2_BaiChuan_LLM_Use.md) |
 | [Claude](3_1_2_Claude_LLM_Use.md)     |
 | [ollama](3_1_2_Ollama_LLM_Use.md)     |
+| [DeepSeek](3_1_2_DeepSeek_LLM_Use.md)      |
+
+To facilitate the integration of models with OpenAI-style protocols, we offer a wrapper object based on the OpenAI general protocol. See [OpenAIStyleLLM](3_1_2_OpenAIStyleLLM_Use.md).
 
 For LLM not included in the list, you can customize the integration of any LLM according to the steps provided in the [LLM definition](2_2_3_Tool_Create_And_Use.md).
 
diff --git a/docs/guidebook/en/3_1_2_DeepSeek_LLM_Use.md b/docs/guidebook/en/3_1_2_DeepSeek_LLM_Use.md
new file mode 100644
index 00000000..99622433
--- /dev/null
+++ b/docs/guidebook/en/3_1_2_DeepSeek_LLM_Use.md
@@ -0,0 +1,35 @@
+# DeepSeek  Usage
+## 1. Create the relevant file.
+Create a YAML file, for example, user_deepseek_llm.yaml
+Paste the following content into your user_deepseek_llm.yaml file.
+```yaml
+name: 'user_deepseek_llm'
+description: 'default default_deepseek_llm llm with spi'
+model_name: 'deepseek-chat'
+max_tokens: 1000
+metadata:
+  type: 'LLM'
+  module: 'agentuniverse.llm.default.deep_seek_openai_style_llm'
+  class: 'DefaultDeepSeekLLM'
+```
+##  2. Environment Setup
+Must be configured: DEEPSEEK_API_KEY  
+Optional: DEEPSEEK_API_BASE
+### 2.1 Configure through Python code
+```python
+import os
+os.environ['DEEPSEEK_API_KEY'] = 'sk-***'
+os.environ['DEEPSEEK_API_BASE'] = 'https://xxxxxx'
+```
+### 2.2 Configure through the configuration file
+In the custom_key.toml file under the config directory of the project, add the configuration:
+```toml
+DEEPSEEK_API_KEY="sk-******"
+DEEPSEEK_API_BASE="https://xxxxxx"
+```
+## 3. Obtaining the DeepSeek API KEY 
+Please refer to the official documentation of DEEPSEEK:https://platform.deepseek.com/api_keys
+
+## 4. Tips
+In the agentuniverse, we have established an LLM named default_deepseek_llm. Users can directly utilize it after configuring their DEEPSEEK_API_KEY.
+
diff --git a/docs/guidebook/en/3_1_2_OpenAIStyleLLM_Use.md b/docs/guidebook/en/3_1_2_OpenAIStyleLLM_Use.md
new file mode 100644
index 00000000..ab712fc3
--- /dev/null
+++ b/docs/guidebook/en/3_1_2_OpenAIStyleLLM_Use.md
@@ -0,0 +1,37 @@
+# OpenAIStyleLLM Usage
+## 1. Create the relevant file.
+Create a YAML file, for example, user_openai_style_llm.yaml
+Paste the following content into your user_openai_style_llm.yaml file.
+```yaml
+name: 'deep_seek_llm'
+description: 'demo deep_seek llm with spi'
+model_name: 'deepseek-chat'
+max_tokens: 4000
+max_context_length: 32000
+api_key_env: 'DEEPSEEK_API_KEY'
+api_base_env: 'DEEPSEEK_API_BASE'
+metadata:
+  type: 'LLM'
+  module: 'agentuniverse.llm.openai_style_llm'
+  class: 'OpenAIStyleLLM'
+```
+Parameter Description:
+max_context_length: The context length that the model can handle.
+api_key_env: The name of the environment variable for the API key.
+api_base_env: The name of the environment variable for the API base.
+These parameters must be configured, and upon service startup, the corresponding values will be loaded from the environment variables.
+##  2. Environment Setup
+Mandatory Configuration: $api_key_env, $api_base_env.
+In the configuration file, api_key_env and api_base_env are set as DEEPSEEK_API_KEY and DEEPSEEK_API_BASE respectively. Therefore, the configuration should be as follows:
+### 2.1 Configure through Python code
+```python
+import os
+os.environ['DEEPSEEK_API_KEY'] = 'sk-***'
+os.environ['DEEPSEEK_API_BASE'] = 'https://xxxxxx'
+```
+### 2.2 Configure through the configuration file
+In the custom_key.toml file under the config directory of the project, add the configuration:
+```toml
+DEEPSEEK_API_KEY="DEEPSEEK_API_KEY"
+DEEPSEEK_API_BASE="https://xxxxxx"
+```
diff --git a/docs/guidebook/en/6_1_Contact_Us.md b/docs/guidebook/en/6_1_Contact_Us.md
index c5a3cf33..64cbba0d 100644
--- a/docs/guidebook/en/6_1_Contact_Us.md
+++ b/docs/guidebook/en/6_1_Contact_Us.md
@@ -1,9 +1,12 @@
-# Contact Us
-* github: https://github.com/alipay/agentUniverse
-* gitee: https://gitee.com/agentUniverse/agentUniverse
-* gitcode: https://gitcode.com/agentUniverse
-* Stack Overflow: https://stackoverflowteams.com/c/agentuniverse/questions
-* Discord: https://discord.gg/VfhEvJzQ
-* WeChat Official Account: agentUniverse智多星
-* DingTalk Group:
-![](../_picture/dingtalk_util20250429.png)
\ No newline at end of file
+### Support
+#### Submit Questions via GitHub Issues
+😊 We recommend submitting your queries using [GitHub Issues](https://github.com/alipay/agentUniverse/issues), we typically respond within 2 days.
+
+#### Contact Us via Discord
+😊 Join our [Discord Channel](https://discord.gg/DHFcdkWAhn) to interact with us.
+
+#### Contact Us via Administrator Email
+😊 Email: [jerry.zzw@antgroup.com](mailto:jerry.zzw@antgroup.com)
+
+#### twitter
+ID: [@agentuniverse_](https://x.com/agentuniverse_)
\ No newline at end of file
diff --git a/docs/guidebook/en/7_1_1_Translation_Case.md b/docs/guidebook/en/7_1_1_Translation_Case.md
new file mode 100644
index 00000000..4a34620c
--- /dev/null
+++ b/docs/guidebook/en/7_1_1_Translation_Case.md
@@ -0,0 +1,51 @@
+# Translation Case Study
+Recently, Professor Andrew Ng of Stanford University open-sourced an AI agent for machine translation—an agent that employs a reflective workflow for translation. This project showcases an example of machine translation utilizing the reflective agent workflow. The primary steps of the agent include:
+1. Initial translation, utilizing a large model (LLM) to translate text from the source language to the target language;
+2. Reflection, wherein the large model identifies deficiencies in the translation and offers constructive improvement suggestions;
+3. Revision of the translation, where the large model retranslates based on the suggestions derived from the reflection;
+The reflective workflow employed in the project enables the model to identify its own deficiencies and implement targeted revisions, constituting a typical multi-agent collaborative working mechanism. This is also a domain in which agentUniverse has been actively engaged, prompting me to contemplate the migration of Andrew Ng's translation agent to agentUniverse.
+This case is based on the Qianwen large model, and prior to use, you need to configure the `DASHSCOPE_API_KEY` in the environment variables.
+
+## Collaborative Working Process of Multi-Agents
+During the translation process, the priority is to ascertain whether the model's length surpasses the maximum number of tokens it can accommodate. For instances where the length exceeds the limit, the text is initially segmented, followed by the translation of each segment. Nonetheless, the entire translation process adheres to the initial translation -> reflection -> revision workflow.
+![Multi-Agent Collaborative Working Process](../_picture/translation_flow_graph.png)
+
+Implementing this translation in aU involves the following steps:
+1. Define prompts related to translation, with three for short text and three for long text. Relevant files include:
+   - [Short Text Init Prompt](../../../sample_standard_app/app/core/prompt/translation/translation_init_en.yaml)
+   - [Short Text Reflection Prompt](../../../sample_standard_app/app/core/prompt/translation/translation_reflection_en.yaml)
+   - [Short Text Improve Prompt](../../../sample_standard_app/app/core/prompt/translation/translation_improve_en.yaml)
+   - [Long Text Init Prompt](../../../sample_standard_app/app/core/prompt/translation/multi_translation_init_en.yaml)
+   - [Long Text Reflection Prompt](../../../sample_standard_app/app/core/prompt/translation/multi_translation_improve_en.yaml)
+   - [Long Text Improve Prompt](../../../sample_standard_app/app/core/prompt/translation/multi_translation_improve_en.yaml)  
+2. Define three agents  
+   - [Short Text Translation Work Agent](../../../sample_standard_app/app/core/agent/translation_agent_case/translation_work_agent.yaml)  
+   - [Short Text Translation Reflection Agent](../../../sample_standard_app/app/core/agent/translation_agent_case/translation_reflection_agent.yaml)  
+   - [Short Text Translation Improvement Agent](../../../sample_standard_app/app/core/agent/translation_agent_case/translation_improve_agent.yaml)  
+   These agents switch their prompts based on whether the task involves translating long or short texts. The specific logic for this switching mechanism is detailed in the [agent file](../../../sample_standard_app/app/core/agent/translation_agent_case/translation_agent.py).
+
+3. Define the collaborative work process of the three agents  
+The collaborative process is illustrated in the earlier-mentioned flowchart of multi-agent collaboration.  
+![Collaborative Work](../_picture/translation_execute_flow.png)  
+For a deeper dive into the processes, refer to the [detailed code file](../../../sample_standard_app/app/core/agent/translation_agent_case/translation_by_token_agent.py).  
+The [configuration file](../../../sample_standard_app/app/core/agent/translation_agent_case/translation_agent.yaml) for the collaborative agents.
+
+### Demonstration Code  
+[Code Link](../../../sample_standard_app/app/test/test_translation_agent.py)
+
+[Long Text](../../../sample_standard_app/app/test/translation_data/long_text.txt)  
+[Short Text](../../../sample_standard_app/app/test/translation_data/short_text.txt)  
+
+[Translation Of Long Text](../../../sample_standard_app/app/test/translation_data/short_text_result.txt)  
+[Translation Of Short Text](../../../sample_standard_app/app/test/translation_data/long_text_result.txt)  
+
+### 演示结果
+We can see that using aU maintains consistency with the original translation_agent project results, successfully replicated.
+aU Results:  
+![aU Long Text Result](../_picture/long_translation_au.png)  
+translation_agent Results:  
+![translation Long Text Result](../_picture/long_translation_wu.png)
+
+### Others
+In reference to Professor Andrew Ng's code, when managing segmented translations, to ensure the coherence of the translation, each segment is translated with the corresponding context. However, incorporating all translation content into the context within his code can undermine the original intent of segmentation, and in certain cases, it can result in an excess of tokens beyond the model's capacity. I have raised a related issue on the corresponding repository address: [Issue Link](https://github.com/andrewyng/translation-agent/issues/28)## Implementation in aU
+
diff --git a/docs/guidebook/en/8_1_1_data_autonomous_agent.md b/docs/guidebook/en/8_1_1_data_autonomous_agent.md
new file mode 100644
index 00000000..2880a1c7
--- /dev/null
+++ b/docs/guidebook/en/8_1_1_data_autonomous_agent.md
@@ -0,0 +1,169 @@
+# Data Autonomous Agent
+## Introduction
+The comprehensive view of the Data Autonomous Agent: Through **automated batch execution of multiple rounds of agent invocation**, **offline adaptive data collection**, **production of evaluation datasets**, **production of fine-tuning datasets**, **model inference training**, and **automatic multidimensional assessment of datasets**, a complete workflow is established to enhance the data autonomy process of large language models and Agents.
+
+The current agentUniverse has released the **Data Autonomous MVP (Minimum Viable Product) version**, which, based on the **query sets** specified by the user, performs **automated batch execution of multiple rounds of agent invocation**, **produces evaluation datasets**, **automatically assesses datasets in multiple dimensions**, and **generates evaluation reports**. It conveys the concept of data autonomy to the open-source community, and will gradually open up the complete capabilities of the data autonomous workflow in the future.
+
+## Background
+Currently, the evaluation of the performance of Agents within the industry often relies on the expertise of specialists in specific fields to conduct a significant amount of manual review and annotation, ensuring the high quality and accuracy of the assessment results.
+
+The dataAgent hopes to use the agent's own capabilities to **self-collect**, **self-manage**, and **intelligently evaluate the data of the Agent**.
+
+In the MVP version, you can use the `dataset_build_agent` to make multiple rounds of batch invocation on the query sets to be evaluated, producing evaluation datasets. Then, by using the `dataset_eval_agent`, you can apply the **Fin-Eva** data evaluation standards published by Ant Group based on seven dimensions (relevance, factuality, rationality, timeliness, structure, integrity, and comprehensiveness) to conduct intelligent data assessment and annotation. The results of multiple rounds of evaluation are subjected to a rich statistical analysis to provide users with a more intuitive view of the changes in the Agent's capabilities.
+
+By utilizing a complete set of data autonomy capabilities, you can easily understand the current level of your agent through intelligently generated evaluation reports.
+
+It needs to be particularly emphasized that the scores in the entire evaluation report are reference values. In the actual production environment, we will conduct a comprehensive comparison of scores from multiple rounds to distinguish the effectiveness of the agent.
+
+## DataAgent Flowchart
+![data_agent_flowchart](../_picture/data_agent_flowchart.jpg)
+- data_agent consists of two parts. **dataset_build_agent** is responsible for automating batch execution of multiple rounds of agent invocation and producing evaluation datasets.
+- **dataset_eval_agent** is responsible for automating the multidimensional evaluation of the dataset and generating evaluation report.
+
+## DataAgent Execution Steps
+### Step1 Establish Agent Queryset
+In DataAgent, you first need to construct an agent queryset in the JSONL file format, where each line represents a complete input for an agent invocation.
+
+As shown below, establish a queryset of 3 items, where "input" corresponds to the query information for the agent:
+```jsonl
+{"input": "Help me predict the 2024 European Cup championship"}
+{"input": "Can Tesla's stock still be bought?"}
+{"input": "What's the weather in New York today?"}
+```
+
+### Step2 Configure DataAgent
+Configure the DataAgent as follows, the configuration file, in addition to the basic configuration of the agent, mainly includes two important items: `dataset_builder` corresponds to the name of the agent for producing the evaluation dataset, and `dataset_evaluator` corresponds to the name of the agent for dataset evaluation and annotation.
+```yaml
+info:
+  name: 'data_agent'
+  description: 'data agent'
+plan:
+  planner:
+    dataset_builder: 'dataset_build_agent'
+    dataset_evaluator: 'dataset_eval_agent'
+metadata:
+  type: 'AGENT'
+  module: 'sample_standard_app.app.core.agent.data_agent_case.data_agent'
+  class: 'DataAgent'
+```
+[data_agent sample configuration file](../../../sample_standard_app/app/core/agent/data_agent_case/data_agent.yaml)
+
+[data_agent sample python file](../../../sample_standard_app/app/core/agent/data_agent_case/data_agent.py)
+
+### Step3 Configure the agent for producing the evaluation dataset.
+Use the **dataset_build_agent** configured in step2 `dataset_builder`, and the following is the configuration file of dataset_build_agent. In addition to the basic configuration of the agent, the configuration file mainly includes two important items: `candidate` configures the name of the agent to be evaluated (for example, to evaluate the effectiveness of demo_rag_agent, candidate is configured as demo_rag_agent), and `concurrency_level` configures the level of concurrency when executing batch agent invocation (for example, setting it to 5 represents calling the candidate agent concurrently with 5).
+```yaml
+info:
+  name: 'dataset_build_agent'
+  description: 'dataset build agent'
+profile:
+  concurrency_level: 1
+plan:
+  planner:
+    candidate: 'demo_rag_agent'
+metadata:
+  type: 'AGENT'
+  module: 'sample_standard_app.app.core.agent.data_agent_case.dataset_build_agent'
+  class: 'DatasetBuildAgent'
+```
+[dataset_build_agent sample configuration file](../../../sample_standard_app/app/core/agent/data_agent_case/dataset_build_agent.yaml)
+
+[dataset_build_agent sample python file](../../../sample_standard_app/app/core/agent/data_agent_case/dataset_build_agent.py)
+
+### Step4 Configure the agent for dataset evaluation and annotation
+Use the **dataset_eval_agent** configured in step2 `dataset_evaluator`, and the following is the configuration file of dataset_eval_agent. In addition to the basic configuration of the agent, the configuration file mainly includes two important items: `llm_model` configures the agent model, and `max_eval_lines` configures the number of evaluation data lines (for example, setting it to 10 means only evaluate the first 10 rows of data, to avoid global evaluation and the consumption of a large number of tokens).
+```yaml
+info:
+  name: 'dataset_eval_agent'
+  description: 'dataset eval agent'
+profile:
+  prompt_version: dataset_eval_agent.en
+  max_eval_lines: 10
+  llm_model:
+    name: 'demo_llm'
+    model_name: 'gpt-4o'
+    temperature: 0.1
+metadata:
+  type: 'AGENT'
+  module: 'sample_standard_app.app.core.agent.data_agent_case.dataset_eval_agent'
+  class: 'DatasetEvalAgent'
+```
+[dataset_eval_agent sample configuration file](../../../sample_standard_app/app/core/agent/data_agent_case/dataset_eval_agent.yaml)
+
+[dataset_eval_agent sample python file](../../../sample_standard_app/app/core/agent/data_agent_case/dataset_eval_agent.py)
+
+### step5 Run DataAgent
+Through the [dataAgent code entry](../../../sample_standard_app/app/examples/data_agent.py), configure two parameters: `queryset_path` representing the path to the queryset, and `turn` representing the total number of rounds for the queryset execution, to start the dataAgent with one click.
+
+Tips: please configure the queryset and specific evaluation rows reasonably to avoid excessive computational and token consumption.
+
+## DataAgent Example Usage
+Refer to the **DataAgent Execution Steps** mentioned above, and start the configured dataAgent through 5 steps.
+
+### Evaluation Dataset
+First, generate the evaluation dataset, storing the agent's Q&A pairs in the JSONL file format.
+As shown in the figure below:
+- query: agent question 
+- answer: agent answer
+
+![data_agent_dataset](../_picture/data_agent_dataset_en.png)
+
+[dataAgent sample evaluation dataset](../../../sample_standard_app/app/examples/data/dataset_turn_1_2024-07-10-15-06-24.jsonl)
+
+
+### Complete Evaluation Results
+After producing the evaluation dataset, dataAgent begins multidimensional data assessment and annotation, generating complete evaluation results (if multiple rounds of dataAgent batch tasks are executed, multiple complete evaluation results will be produced).
+
+As shown in the figure below:
+- Line Number: The line number of the current evaluation data within the dataset.
+- Overall Score: comprehensive score = total of assessment scores from multiple dimensions / number of assessment dimensions (full score is 5, score range 0-5).
+- Query: agent question.
+- Answer: agent answer.
+- Relevance Score: represents the relevance of the agent answer to the question, the higher the score, the more relevant (full score is 5, score range 0-5).
+- Relevance Suggestion: represents issues and suggestions for improvement in the relevance dimension.
+- More dimensions Score/Suggestion: similar to the Relevance dimension.
+![data_agent_eval_result](../_picture/data_agent_eval_result_en.png)
+
+[dataAgent sample eval result](../../../sample_standard_app/app/examples/data/eval_result_turn_1_2024-07-10-15-06-24.xlsx)
+
+
+
+### Comprehensive Evaluation Report
+Generate a comprehensive evaluation report based on multiple complete evaluation results.
+
+As shown in the figure below:
+- Line Name: Includes two types, such as `Queryset Turn x` representing the evaluation dataset generated in the x-th round based on the queryset, and `Turn Avg Score` representing the average score of multiple rounds and dimensions.
+- Overall Avg Score: The sum of the overall scores of all data in a single round of the dataset / the amount of data in the dataset (full score is 5, score range 0-5).
+- Relevance Avg Score: The sum of the relevance scores of all data in a single round of the dataset / the amount of data in the dataset (full score is 5, score range 0-5).
+- More dimensions Avg Score: similar to the Relevance dimension.
+
+![data_agent_eval_report](../_picture/data_agent_eval_report_en.png)
+
+[dataAgent sample evaluation report](../../../sample_standard_app/app/examples/data/eval_report_2024-07-10-15-06-24.xlsx)
+
+### Comparative Experiment
+Adjust the llm model in demo_rag_agent within aU from the previous `qwen1.5-72b-chat` to `qwen1.5-7b-chat`, and after evaluation by dataAgent, the comprehensive evaluation reports are as follows:
+
+The following figure is the comprehensive evaluation report produced by the data autonomous agent when the model is qwen1.5-7b-chat:
+![data_agent_eval_report](../_picture/data_agent_eval_report_en_qwen7b.png)
+
+The following figure is the comprehensive evaluation report produced by the data autonomous agent when the model is qwen1.5-72b-chat:
+![data_agent_eval_report](../_picture/data_agent_eval_report_en.png)
+Comparing the two comprehensive evaluation reports, it can be observed that after the agent llm model was changed from qwen1.5-7b-chat to qwen1.5-72b-chat, there was a significant increase in the scores across all dimensions in multiple rounds. This method can quickly distinguish the difference in agent effects after the agent configuration was changed.
+
+## DataAgent Detailed Description
+### data_agent
+- [configuration file](../../../sample_standard_app/app/core/agent/data_agent_case/data_agent.yaml)
+- [agent file](../../../sample_standard_app/app/core/agent/data_agent_case/data_agent.py)
+
+### dataset_build_agent
+- [configuration file](../../../sample_standard_app/app/core/agent/data_agent_case/dataset_build_agent.yaml)
+- [agent file](../../../sample_standard_app/app/core/agent/data_agent_case/dataset_build_agent.py)
+- The evaluation data produced by dataset_build_agent is stored locally in jsonl format (the jsonl file name is dataset_turn_{i}_{date}, `i` represents the round, and `date` represents the generation time)
+
+### dataset_eval_agent
+- [configuration file](../../../sample_standard_app/app/core/agent/data_agent_case/dataset_eval_agent.yaml)
+- [agent file](../../../sample_standard_app/app/core/agent/data_agent_case/dataset_eval_agent.py)
+- [prompt file](../../../sample_standard_app/app/core/prompt/dataset_eval_agent_en.yaml)：agentUniverse currently opens six agent evaluation dimensions that are validated in the industry (the MVP version does not open **comprehensive dimension**. The current comprehensive evaluation standard is biased towards the financial field, so it is not mentioned in the open source community)
+- The **complete evaluation results** produced by dataset_eval_agent are stored locally in Excel format (the file name is eval_result_turn_{i}_{date}, `i` represents the round, and `date` represents the generation time)
+- The **comprehensive evaluation report** of dataset_eval_a_agent production is stored locally in Excel format (the file name is eval_report_{date}, and date represents the generation time)
\ No newline at end of file
diff --git a/docs/guidebook/en/9_1_Citation.md b/docs/guidebook/en/9_1_Citation.md
new file mode 100644
index 00000000..3936b644
--- /dev/null
+++ b/docs/guidebook/en/9_1_Citation.md
@@ -0,0 +1,17 @@
+### Citation
+The agentUniverse project is supported by the following research achievements.
+
+BibTeX formatted
+```text
+@misc{wang2024peerexpertizingdomainspecifictasks,
+      title={PEER: Expertizing Domain-Specific Tasks with a Multi-Agent Framework and Tuning Methods}, 
+      author={Yiying Wang and Xiaojing Li and Binzhu Wang and Yueyang Zhou and Han Ji and Hong Chen and Jinshi Zhang and Fei Yu and Zewei Zhao and Song Jin and Renji Gong and Wanqing Xu},
+      year={2024},
+      eprint={2407.06985},
+      archivePrefix={arXiv},
+      primaryClass={cs.AI},
+      url={https://arxiv.org/abs/2407.06985}, 
+}
+```
+Overview: In the experimental section of this study, scores were assigned across seven dimensions: completeness, relevance, conciseness, factualness, logicality, structure, and comprehensiveness (each dimension has a maximum score of 5 points). The PEER model scored higher on average in each evaluation dimension compared to BabyAGI, and demonstrated significant advantages in the dimensions of completeness, relevance, logicality, structure, and comprehensiveness. Additionally, the PEER model achieved an 83% superior rate over BabyAGI using the GPT-3.5 turbo (16k) model, and an 81% superior rate using the GPT-4o model. For more details, please refer to the literature.
+https://arxiv.org/pdf/2407.06985
\ No newline at end of file
diff --git "a/docs/guidebook/zh/0_\347\233\256\345\275\225.md" "b/docs/guidebook/zh/0_\347\233\256\345\275\225.md"
index 27c590f0..fafa18a2 100644
--- "a/docs/guidebook/zh/0_\347\233\256\345\275\225.md"
+++ "b/docs/guidebook/zh/0_\347\233\256\345\275\225.md"
@@ -46,6 +46,9 @@
   * 2.4.4 日志体系
     * 2.4.4.1 [日志组件](2_4_4_日志组件.md)
   * 2.4.5 数据采集
+    * 2.4.5.1 [monitor模块](2_5_1_监控模块.md)
+  * 2.4.6 数据自治
+    * 2.4.6.1 [数据自治智能体](8_1_1_数据自治智能体.md)
 
 **3.组件参考手册**
 * 3.1 领域组件
@@ -58,7 +61,11 @@
     * 3.1.2.5 [百川使用说明](3_1_2_百川使用.md)
     * 3.1.2.6 [Claude使用说明](3_1_2_Claude使用.md)
     * 3.1.2.7 [Ollama使用说明](3_1_2_Ollama使用.md)
+    * 3.1.2.8 [DeepSeek使用说明](3_1_2_DeepSeek使用.md)
+    * 3.1.2.9 [通用OpenAI协议风格包装类型](3_1_2_OpenAIStyleLLM使用.md)
   * 3.1.3 工具列表(Tool)
+    * 3.1.3.1 [集成工具列表](2_2_3_集成的工具.md)
+    * 3.1.3.2 [LangChain工具包装类型](2_2_3_集成LangChain工具.md)
   * 3.1.4 知识列表(Knowledge)
   * 3.1.5 记忆列表(Memory)
   * 3.1.6 计划列表(Planner)
@@ -88,9 +95,12 @@
 * 6.3 [基于多轮多Agent的讨论小组](6_2_1_讨论组.md)
 * 6.4 PEER多Agent协作案例
   * 6.4.1 [金融事件分析案例](./6_4_1_金融事件分析案例.md)
+* 6.5 [吴恩达反思工作流翻译智能体复刻](./7_1_1_翻译案例.md)
 
 **7.系列文章**
 
 **8.常见问题FAQ**
 
-**[9.联系我们](6_1_联系我们.md)**
+**[9.研究文献](9_1_研究文献.md)**
+
+**[10.联系我们](6_1_联系我们.md)**
diff --git "a/docs/guidebook/zh/1_1_\347\256\200\344\273\213.md" "b/docs/guidebook/zh/1_1_\347\256\200\344\273\213.md"
index d0d25ee7..9047edce 100644
--- "a/docs/guidebook/zh/1_1_\347\256\200\344\273\213.md"
+++ "b/docs/guidebook/zh/1_1_\347\256\200\344\273\213.md"
@@ -1,25 +1,94 @@
-# agentUniverse项目简介
-## 项目介绍
-本框架是一个大模型多智能体框架。核心提供了多智能体协作编排组件，其相当于一个模式工厂（pattern factory），允许开发者对多智能体协作模式进行开发定制，同时附带了搭建单一智能体的全部关键组件。开发者可以基于本框架轻松构建多智能体应用，并通过社区对不同领域的pattern实践进行交流共享。
+## agentUniverse是什么？
 
-框架将预置有若干已在真实产业中验证有效的多智能体协作模式组件，并在未来持续丰富。目前即将开放的模式组件包括：
+**agentUniverse 是一个基于大型语言模型的多智能体框架。** agentUniverse为您提供灵活易拓展的单智能体构建能力；agentUniverse核心拥有丰富的多智能体协同模式组件（可视为一个协同模式工厂Pattern Factory），它能让智能体们各司其职在解决不同领域问题时发挥最大的能力；同时agentUniverse专注于领域经验的融合，帮助您轻松将领域经验融入到智能体的工作中。🎉🎉🎉
 
-- PEER 模式组件：
-该pattern通过计划（Plan）、执行（Execute）、表达（Express）、评价（Review）四个不同职责的智能体，实现对复杂问题的多步拆解、分步执行，并基于评价反馈进行自主迭代，最终提升推理分析类任务表现。典型适用场景：事件解读、行业分析
+**🌈🌈🌈agentUniverse帮助开发者、企业轻松构建出领域专家级别的强大智能体协同为您工作。**
 
+![](../_picture/agent_universe_framework_resize.jpg)
 
-- DOE 模式组件：
-该pattern通过数据精制（Data-fining）、观点注入（Opinion-inject）、表达（Express）三个智能体，实现对数据密集、高计算精度、融合专家观点的生成任务的效果提升。典型适用场景：财报生成
+我们期待您通过社区对不同领域的Pattern进行实践与交流共享，框架也预置有若干已在真实产业中验证有效的多智能体协作模式组件，并在未来持续丰富。目前即将开放的模式组件包括：
+* PEER 模式组件： 该pattern通过计划（Plan）、执行（Execute）、表达（Express）、评价（Review）四个不同职责的智能体，实现对复杂问题的多步拆解、分步执行，并基于评价反馈进行自主迭代，最终提升推理分析类任务表现。典型适用场景：事件解读、行业分析
+* DOE 模式组件： 该pattern通过数据精制（Data-fining）、观点注入（Opinion-inject）、表达（Express）三个智能体，实现对数据密集、高计算精度、融合专家观点的生成任务的效果提升。典型适用场景：财报生成
+****************************************
+## 目录
+* [快速开始](#快速开始)
+* [案例与样例工程](#案例与样例工程)
+* [更多](#更多)
+  * [为什么使用agentUniverse](#为什么使用agentUniverse)
+  * [核心特性](#核心特性)
+  * [用户指南](#用户指南)
+  * [API参考](#API参考)
+  * [支持](#支持)
+  * [鸣谢](#鸣谢)
+****************************************
+## 快速开始
+使用pip：
+```shell
+pip install agentUniverse
+```
 
-更多模式组件持续推出中...
+我们将向您展示如何：
+* 进行环境与应用工程准备
+* 构建一个简单的agent
+* 使用模式组件完成多agent协同
+* 对agent执行效果进行测试调优
+* 对agent进行快速服务化
 
-![](../_picture/agent_universe_framework_resize.jpg)
+详情请阅读[快速开始](1_3_%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B.md) 。
+****************************************
+## 案例与样例工程
+### 🌟 使用案例
+[法律咨询Agent](7_1_1_法律咨询案例.md)
+
+[Python代码生成与执行Agent](7_1_1_Python自动执行案例.md)
+
+[基于多轮多Agent的讨论小组](6_2_1_讨论组.md)
+
+### 🌟 示例项目
+[agentUniverse 示例项目](../../../sample_standard_app)
+
+### 🌟 使用aU构建的产品案例
+[支小助 金融从业专家AI助手](https://zhu.alipay.com/)
+****************************************
+## 更多
+### 为什么使用agentUniverse
+💡[为什么使用agentUniverse?](1_为什么选择agentUniverse.md)
+
+### 核心特性
+
+* **丰富的多智能体协同模式：** 提供PEER（Plan/Execute/Express/Review）、DOE（Data-fining/Opinion-inject/Express）等产业中验证有效的协同模式，同时支持用户自定义编排新模式，让多个智能体有机合作；
+
+* **所有组件均可定制：** LLM、知识、工具、记忆等所有框架组件均提供自定义能力，供用户来增强专属智能体；
+
+* **轻松融入领域经验：** 提供领域prompt、知识构建与管理的能力，同时支持领域级SOP编排与注入，将智能体对齐至领域专家级别；
+
+💡更多特定见[agentUniverse核心特性](1_核心特性.md)部分。
+
+### 用户指南
+💡更多详细信息，请阅读[用户指南](0_%E7%9B%AE%E5%BD%95.md) 。
+
+### API参考
+💡请阅读[readthedocs](https://agentuniverse.readthedocs.io/en/latest/) 。
+
+### 支持
+#### 通过github issue提交疑问
+😊 我们建议您使用[github issue](https://github.com/alipay/agentUniverse/issues) 提交您的疑问, 我们通常会在2日内回复。
+
+#### 通过Discord联系我们
+😊 加入我们的 [Discord频道](https://discord.gg/VfhEvJzQ) 与我们进行交流。
+
+#### 通过钉钉群联系我们
+😊 加入我们的钉钉答疑群与我们联系。
+![](../_picture/dingtalk_util20250429.png)
+
+#### 通过管理员Email联系我们
+😊 Email: [jerry.zzw@antgroup.com](mailto:jerry.zzw@antgroup.com)
+
+#### 微信公众号
 
-除了丰富的协作模式外agentUniverse还包含如下主要特性：
+😊 公众号ID：**agentUniverse智多星**
 
-* **快速简单的研发体验**： 通过配置化与简单的接口实现，您可以基于本框架快速完成单智能体搭建、多智能体协同过程定义与服务化；
-* **丰富的组件与扩展定制**： 框架提供了大量常见的领域组件（LLM、知识、工具、记忆、协同模式等组件）与技术组件（DB、RPC、Message等组件）的默认实现；提供了基于所有组件类型的扩展标准，您可以对任何部分进行定制并用来强化您的agent能力；
-* **prompt友好与管理**：框架内置了一整套prompt管理机制，您可以对于prompt进行多版本管理、切换与专家经验领域prompt化。
+更多相关的文章与资讯你可以在微信公众号中获取。
 
 ## 鸣谢
-本项目部分基于langchain、pydantic、gunicorn、flask、SQLAlchemy、chromadb等开源项目（详细依赖列表可见requirements.txt）实现，在此特别感谢相关项目与关联方。
\ No newline at end of file
+本项目部分基于langchain、pydantic、gunicorn、flask、SQLAlchemy、chromadb等（详细依赖列表可见pyproject.toml）优秀开源项目实现，在此特别感谢相关项目与关联方。 🙏🙏🙏
\ No newline at end of file
diff --git "a/docs/guidebook/zh/1_\344\270\272\344\273\200\344\271\210\351\200\211\346\213\251agentUniverse.md" "b/docs/guidebook/zh/1_\344\270\272\344\273\200\344\271\210\351\200\211\346\213\251agentUniverse.md"
new file mode 100644
index 00000000..e5f0e4d7
--- /dev/null
+++ "b/docs/guidebook/zh/1_\344\270\272\344\273\200\344\271\210\351\200\211\346\213\251agentUniverse.md"
@@ -0,0 +1,10 @@
+# 为什么选择agentUniverse
+通过agentUniverse您可以轻松构建出领域专家级别的强大智能体协同为您工作。
+
+agentUniverse提供了搭建单智能体的全部关键组件，所有可见的组件都是可扩展与定制的，它们可以非常轻松的连接大模型生态组件与中间件，帮助您构建能强大的单智能体。
+
+agentUniverse拥有丰富的多智能体协同能力，不同的协同模式专精于解决专属场景下的领域问题，多智能体将扮演不同的角色将各司其职围绕着任务目标协同工作，这将大大提升智能体们完成任务的表现；
+
+agentUniverse专注于领域prompt、领域知识、领域SOP构建管理的能力，通过这些能力将领域经验注入到所有智能体的协同工作中去，保证智能体在特定领域拥有对齐人工专家的能力；
+
+此外agentUniverse在金融领域已经有非常多的产业级产品与实践，我们会将金融领域经过产业验证的协同模式、领域经验、解决方案作为案例分享开放。
\ No newline at end of file
diff --git "a/docs/guidebook/zh/1_\346\240\270\345\277\203\347\211\271\346\200\247.md" "b/docs/guidebook/zh/1_\346\240\270\345\277\203\347\211\271\346\200\247.md"
new file mode 100644
index 00000000..3899fd53
--- /dev/null
+++ "b/docs/guidebook/zh/1_\346\240\270\345\277\203\347\211\271\346\200\247.md"
@@ -0,0 +1,12 @@
+# 核心特性
+* **面向智能体设计：** 框架所有设计均从智能体领域出发，通过感知、规划、行动、记忆模块定制智能体；
+* **丰富的多智能体协同模式：** 提供PEER（Plan/Execute/Express/Review）、DOE（Data-fining/Opinion-inject/Express）等产业中验证有效的协同模式，同时支持用户自定义编排新模式，让多个智能体有机合作；
+* **所有组件均可定制：** LLM、知识、工具、记忆等所有框架组件均提供自定义能力，供用户来增强专属智能体；
+* **轻松融入领域经验：** 提供领域prompt、知识构建与管理的能力，同时支持领域级SOP编排与注入，将智能体对齐至领域专家级别；
+* **面向多LLM且可扩展：** 内置OpenAi系列、qwen系列、Baichuan系列、Kimi系列等数种模型LLM接入方式，同时提供模型扩展标准，支持任意第三方模型服务与私有部署模型接入；
+* **面向多数据源且可扩展：** 框架支持多种数据源，无论是SQLite, MySQL, Oracle等这一类传统数据源、还是ChromaDB、Milvu这一类向量数据库，同时提供数据源扩展标准，支持任意第三方数据服务与其他数据库自定义接入；
+* **便捷的生态融合能力：** 框架将当前比较成熟先进、经得起实际考验的大模型应用生态能力融合，屏蔽了大部分底层配置与实现，无论是LangChain、llama_index这类LLM生态组件，还是如Grpc、SLS这一类技术组件。
+* **效果可观测与可反馈：** 通过monitor组件所有agentUniverse的服务交互、模型交互均可被记录观测，结合框架提供的智能体自动评测能力，您可以轻松的掌握智能体或模型迭代带来的效果增益，并反馈至服务迭代与模型训练中。
+* **面向企业私有组件扩展：** 框架提供私有技术组件扩展加载机制，通过配置可以将企业内部如自研RPC协议组件、消息组件、日志组件接入；
+* **支持一键服务化：** 框架通过Flask+Gunicore的能力支持一键启动WebServer，通过服务化能力您可以将agent的能力融合至任何现有的系统中去；
+* **面向标准容器交付：** 框架提供了标准的Docker镜像，同时基于Docker与K8S能力给出推荐集成方案。
\ No newline at end of file
diff --git "a/docs/guidebook/zh/2_2_2_\346\250\241\345\236\213\345\256\232\344\271\211\344\270\216\344\275\277\347\224\250.md" "b/docs/guidebook/zh/2_2_2_\346\250\241\345\236\213\345\256\232\344\271\211\344\270\216\344\275\277\347\224\250.md"
index 77f90a8b..1d513e6e 100644
--- "a/docs/guidebook/zh/2_2_2_\346\250\241\345\236\213\345\256\232\344\271\211\344\270\216\344\275\277\347\224\250.md"
+++ "b/docs/guidebook/zh/2_2_2_\346\250\241\345\236\213\345\256\232\344\271\211\344\270\216\344\275\277\347\224\250.md"
@@ -462,7 +462,7 @@ module: 'agentuniverse.llm.default.default_openai_llm'
 class: 'DefaultOpenAILLM'
 ```
 
-假如我们需要配置定义一个基于`gpt-3.5-turbo`模型，最大token限制为1000，失败重试次数未2次的LLM实例，其配置如下:
+假如我们需要配置定义一个基于`gpt-3.5-turbo`模型，最大token限制为1000，失败重试次数为2次的LLM实例，其配置如下:
 ```yaml
 name: 'demo_llm'
 description: 'demo openai'
diff --git "a/docs/guidebook/zh/2_2_3_\351\233\206\346\210\220LangChain\345\267\245\345\205\267.md" "b/docs/guidebook/zh/2_2_3_\351\233\206\346\210\220LangChain\345\267\245\345\205\267.md"
new file mode 100644
index 00000000..d8126469
--- /dev/null
+++ "b/docs/guidebook/zh/2_2_3_\351\233\206\346\210\220LangChain\345\267\245\345\205\267.md"
@@ -0,0 +1,84 @@
+# 集成LangChain工具
+
+根据langchain中工具对象的初始化的难易程度，可以将其分为两类：
+第一类，简单初始化，只需要简单的参数配置即可完成初始化。
+第二类，复杂初始化，内部包含一些复杂的对象需要进行初始化。
+对于一类工具，你可以在aU中直接使用配置文件进行初始化，如DuDuckGo搜索工具的初始化。
+对于第二类工具，我们实现了一个LangChainTool基础类，你只需要实现该类的init_langchain_tool方法，初始化对应的langchain工具对象即可，参考维基百科的初始化方法。
+
+注意，如果你想直接使用LangChain中的description，在配置文件中description必须要配置为空
+
+一个工具初始化示例：
+[工具地址](../../../sample_standard_app/app/core/tool/langchain_tool/human_input_run.yaml)
+```yaml
+name: 'human_input_run'
+description: ''
+tool_type: 'api'
+input_keys: ['input']
+langchain:
+  module: langchain_community.tools
+  class_name: HumanInputRun
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.langchain_tool'
+  class: 'LangChainTool'
+```
+参数说明：
+    langchain: 你打算使用的langchain工具，需要配置module和class_name
+    langchain.module: langchain的模块名，例如langchain_community.tools
+    langchain.class_name: langchain的类名，例如HumanInputRun
+    langchain.init_params： langchain的初始化参数，例如：
+        ```yaml
+        langchain:
+          module: langchain_community.tools
+          class_name: HumanInputRun
+          init_params:
+            prompt: '请输入你的问题'
+        ```
+    如果需要使用你完全重写了init_langchain_tool方法，那么你不需要配置该部分
+该工具可以直接使用，无需任何keys
+
+## 1. 集成LangChain中的DuckDuckGo工具
+[工具地址](../../../sample_standard_app/app/core/tool/langchain_tool/duckduckgo_search.yaml)
+```yaml
+name: 'duckduckgo_search'
+description: 'DuckDuckGo Search tool'
+tool_type: 'api'
+input_keys: ['input']
+langchain:
+  module: langchain.tools
+  class_name: DuckDuckGoSearchResults
+  init_params:
+    backend: news
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.langchain_tool.langchain_tool'
+  class: 'LangChainTool'
+```
+该工具可以直接使用，无需任何keys
+
+## 2.集成维基百科搜索
+因为LangChain的定义当中，包含一个api_wrapper对象，因此定义对象文件，并重写初始化方法：
+```python
+from langchain_community.tools import WikipediaQueryRun
+from langchain_community.utilities import WikipediaAPIWrapper
+
+from sample_standard_app.app.core.tool.langchain_tool.langchain_tool import LangChainTool
+
+
+class WikipediaTool(LangChainTool):
+    def init_langchain_tool(self, component_configer):
+        wrapper = WikipediaAPIWrapper()
+        return WikipediaQueryRun(api_wrapper=wrapper)
+```
+定义配置
+```yaml
+name: 'wikipedia_query'
+description: ''
+tool_type: 'api'
+input_keys: ['input']
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.langchain_tool.wikipedia_query'
+  class: 'WikipediaTool'
+```
\ No newline at end of file
diff --git "a/docs/guidebook/zh/2_2_3_\351\233\206\346\210\220\347\232\204\345\267\245\345\205\267.md" "b/docs/guidebook/zh/2_2_3_\351\233\206\346\210\220\347\232\204\345\267\245\345\205\267.md"
new file mode 100644
index 00000000..6e153352
--- /dev/null
+++ "b/docs/guidebook/zh/2_2_3_\351\233\206\346\210\220\347\232\204\345\267\245\345\205\267.md"
@@ -0,0 +1,188 @@
+# 集成的工具
+
+当前au的 sample工程当中，集成了以下工具：
+
+## 1. 搜索工具
+
+### 1.1 谷歌搜索
+[工具地址](../../../sample_standard_app/app/core/tool/google_search_tool.yaml)  
+详细配置信息：
+
+```yaml
+name: 'google_search_tool'
+description: |
+  该工具可以用来进行谷歌搜索，工具的输入是你想搜索的内容。
+  工具输入示例：
+    示例1: 你想要搜索上海的天气时，工具的输入应该是：上海今天的天气
+    示例2: 你想要搜索日本的天气时，工具的输入应该是：日本的天气
+tool_type: 'api'
+input_keys: ['input']
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.google_search_tool'
+  class: 'GoogleSearchTool'
+```
+为了使用该api,你必须申请(https://serper.dev)SERPER_API_KEY并配置在环境变量当中。  
+配置方法：
+1. 通过python代码配置
+必须配置：SERPER_API_KEY
+```python
+import os
+os.environ['SERPER_API_KEY'] = 'xxxx'
+```
+2. 通过配置文件配置
+在项目的config目录下的custom_key.toml当中，添加配置：
+```toml
+SERPER_API_KEY="xxxx"
+```
+
+
+### 1.2 Bing(必应)搜索
+当前集成了Bing官方的搜索
+[工具地址](../../../sample_standard_app/app/core/tool/bing_search_tool.yaml)  
+工具配置：
+```yaml
+name: 'bing_search_tool'
+description: 'demo bing search tool'
+tool_type: 'api'
+input_keys: ['input']
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.bing_search_tool'
+  class: 'BingSearchTool'
+```
+为了使用该api,你必须申请BING_SUBSCRIPTION_KEY,并配置在环境变量当中。  
+配置方法：
+1. 通过python代码配置
+必须配置：BING_SUBSCRIPTION_KEY
+```python
+import os
+os.environ['BING_SUBSCRIPTION_KEY'] = 'xxxx'
+```
+2. 通过配置文件配置
+在项目的config目录下的custom_key.toml当中，添加配置：
+```toml
+BING_SUBSCRIPTION_KEY="xxxx"
+```
+
+
+
+### 1.3 Search API
+支持多种搜索工具，例如：   
+- [百度搜索](../../../sample_standard_app/app/core/tool/search_api_baidu_tool.yaml)
+- [Bing搜索](../../../sample_standard_app/app/core/tool/search_api_bing_tool.yaml)  
+其他搜索引擎还包括: 谷歌搜索、亚马逊搜索、YouTube搜索等,详细信息可以参考:https://www.searchapi.io/
+工具配置：
+```yaml
+name: 'search_api_baidu_tool'
+description: '百度(必应)搜索工具，输入为一个要搜索内容的字符串，例如：input=黄金价格是多少'
+tool_type: 'api'
+input_keys: ['input']
+engine: 'baidu'
+search_type: 'json'
+search_params:
+  num: 10
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.search_api_tool'
+  class: 'SearchAPITool'
+```
+参数说明:  
+search_type: 代表你期望返回的搜索结果的格式，json代表你期望为json格式，common代表你期望为string字符串格式。
+search_params: 代表你需要额外的传递给搜索引擎的参数，比如在百度搜索中，num代表了返回的搜索结果条数，详细参数需要参考https://www.searchapi.io/  。
+engine: 你期望使用的搜索引擎，baidu、google、bing、amazon、youtube...
+为了使用该api,你必须从[官网](https://www.searchapi.io/)申请SEARCH_API_KEY,并配置在环境变量当中。  
+配置方法：
+1. 通过python代码配置
+必须配置：SEARCH_API_KEY
+```python
+import os
+os.environ['SEARCHAPI_API_KEY'] = 'xxxxxx'
+```
+2. 通过配置文件配置
+在项目的config目录下的custom_key.toml当中，添加配置：
+```toml
+SEARCHAPI_API_KEY="xxxxxx"
+```
+
+
+## 2. 代码工具
+
+### 2.1 PythonRepl
+[工具地址](../../../sample_standard_app/app/core/tool/python_repl_tool.yaml)  
+该工具可以执行一段Python代码,工具的配置信息:  
+```yaml
+name: 'python_runner'
+description: '使用该工具可以执行python代码，可以在pycharm中直接运行的代码.工具的输入必须时一段有效的python代码. 如何你想要查看工具的执行结果, 必须在python代码中使用print(...)打印你想查看的内容。
+    工具输入示例：
+      你想要计算1+3等于多少时，工具的输入应该是：
+        ```py 
+        print(1+3)
+        ```
+      你想要获取百度页面的信息时，工具的输入应该是: 
+        ```py 
+        import requests
+        resp=requests.get("https://www.baidu.com")
+        print(resp.content)
+        ```'
+tool_type: 'api'
+input_keys: ['input']
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.python_repl'
+  class: 'PythonREPLTool'
+```
+
+该工具可以直接使用，无需任何key，但是为了系统安全，请不要在生产环境使用该工具
+
+## 3.HTTP 工具
+[工具地址](../../../sample_standard_app/app/core/tool/request_get_tool.yaml)
+该工具可以发送一个GET请求，工具的配置信息 :  
+```yaml
+name: 'requests_get'
+# description copy from langchain RequestGetTool
+description: 'A portal to the internet. Use this when you need to get specific
+    content from a website. Input should be a  url (i.e. https://www.google.com).
+    The output will be the text response of the GET request.
+        ```'
+headers:
+  content-type: 'application/json'
+method: 'POST'
+json_parser: false
+response_content_type: json
+tool_type: 'api'
+input_keys: ['input']
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.request_tool'
+  class: 'RequestTool'
+```
+发送POST请求时可以参考的配置：
+```yaml
+name: 'requests_post'
+# description copy from langchain RequestPOSTTool
+description: 'Use this when you want to POST to a website.
+    Input should be a json string with two keys: "url" and "data".
+    The value of "url" should be a string, and the value of "data" should be a dictionary of 
+    key-value pairs you want to POST to the url.
+    Be careful to always use double quotes for strings in the json string
+    The output will be the text response of the POST request.
+        ```'
+headers:
+  content-type: 'application/json'
+method: 'POST'
+json_parser: true
+response_content_type: json
+tool_type: 'api'
+input_keys: ['input']
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.request_tool'
+  class: 'RequestTool'
+```
+参数说明：
+    method 请求的方式GET/POST/PUT等
+    headers 发送请求需要使用的 http的header,
+    json_parse 输入参数是否需要是要HTTP解析，POST请求时需要设置为True,GET请求需要设置为False
+    response_content_type http请求结果的解析方式，设置为json时，会返回json结果，设置为text时会返回text结果
+该工具可以直接使用，无需任何keys
\ No newline at end of file
diff --git "a/docs/guidebook/zh/2_2_5_\350\256\260\345\277\206\345\256\232\344\271\211\344\270\216\344\275\277\347\224\250.md" "b/docs/guidebook/zh/2_2_5_\350\256\260\345\277\206\345\256\232\344\271\211\344\270\216\344\275\277\347\224\250.md"
index 386ea213..b7b5c9b3 100644
--- "a/docs/guidebook/zh/2_2_5_\350\256\260\345\277\206\345\256\232\344\271\211\344\270\216\344\275\277\347\224\250.md"
+++ "b/docs/guidebook/zh/2_2_5_\350\256\260\345\277\206\345\256\232\344\271\211\344\270\216\344\275\277\347\224\250.md"
@@ -64,7 +64,7 @@ chat_history=[{"content": "你好", "type": "human"}, {"content": "你好", "typ
 ```python
 from agentuniverse.agent.memory.memory_manager import MemoryManager
 
-memory = MemoryManager().get_instance_obj(component_instance_name=memory_name, new_instance=True)
+memory = MemoryManager().get_instance_obj(component_instance_name=memory_name)
 ```
 
 # 总结
diff --git "a/docs/guidebook/zh/2_5_1_\347\233\221\346\216\247\346\250\241\345\235\227.md" "b/docs/guidebook/zh/2_5_1_\347\233\221\346\216\247\346\250\241\345\235\227.md"
new file mode 100644
index 00000000..e2dbdb6d
--- /dev/null
+++ "b/docs/guidebook/zh/2_5_1_\347\233\221\346\216\247\346\250\241\345\235\227.md"
@@ -0,0 +1,180 @@
+# 监控模块
+
+agentUniverse监控模块，主要围绕agent运行时的模型调用/token开销等进行数据追踪与记录。针对**目前框架已开放的模型调用追踪能力和agent调用追踪能力**，本文将详细介绍如何使用这两个功能。
+
+## 监控配置
+
+在agentUniverse的主配置文件`config.toml`中配置监控模块配置信息，如下：
+
+```toml
+[MONITOR]
+activate = true
+dir = './monitor'
+```
+
+- **`activate`**: 监控模块总开关，默认关闭，设置为true后将开启agent运行时的LLM调用追踪功能和agent调用追踪功能。
+- **`dir`**: 监控模块对应的本地记录存储目录，默认为运行时，上一层级下的monitor目录，用户可自定义配置目录路径。
+
+### 模型粒度配置
+
+针对LLM调用追踪能力，agentUniverse同样支持模型粒度配置，当监控模块主开关打开后，可以通过LLM的yaml文件选择关闭特定模型调用追踪功能。
+
+比如用户自定义的`demo_llm`模型，tracing设置为false，则关闭该模型的调用追踪功能。
+
+```yaml
+name: 'demo_llm'
+description: 'demo openai'
+model_name: 'gpt-4o'
+max_tokens: 1000
+max_retries: 2
+tracing: false
+metadata:
+  type: 'LLM'
+  module: 'agentuniverse.llm.default.default_openai_llm'
+  class: 'DefaultOpenAILLM'
+```
+
+特别说明：agentUniverse主配置文件的监控模块总开关**优先级最高**，若activate配置为false的情况下，模型粒度配置不生效。
+
+### Agent粒度配置
+
+针对agent调用追踪能力，agentUniverse同样支持agent粒度配置，当监控模块主开关打开后，可以通过agent的yaml文件选择关闭特定agent调用追踪功能。
+
+比如用户自定义的`demo_agent`智能体，tracing设置为false，则关闭该智能体的调用追踪功能。
+
+```yaml
+info:
+  name: 'demo_agent'
+  description: 'demo agent'
+profile:
+  tracing: false
+  prompt_version: demo_agent_prompt.cn
+  llm_model:
+    name: 'qwen_llm'
+plan:
+  planner:
+    name: 'rag_planner'
+action:
+  tool:
+    - 'google_search_tool'
+memory:
+  name: ''
+metadata:
+  type: 'AGENT'
+  module: 'sample_standard_app.app.core.agent.rag_agent_case.demo_rag_agent'
+  class: 'DemoRagAgent'
+```
+
+特别说明：agentUniverse主配置文件的监控模块总开关**优先级最高**，若activate配置为false的情况下，agent粒度配置不生效。
+
+## 监控模块说明
+
+### 模型调用追踪
+
+用户若使用当前agentUniverse支持的**默认模型类**，则如上文所述配置完成后即可使用该功能。
+
+#### trace_llm装饰器
+
+若用户根据agentUniverse的模型基类LLM做自定义扩展，实现自定义模型调用，则需要在自定义模型类的调用方法call/acall中增加@trace_llm装饰器功能。
+
+如下自定义模型示例代码：
+
+```python
+from typing import Any, Iterator, Union, AsyncIterator
+
+from agentuniverse.llm.llm import LLM, LLMOutput
+from agentuniverse.base.annotation.trace import trace_llm
+
+
+class DemoLLM(LLM):
+
+    @trace_llm
+    def call(self, messages: list, **kwargs: Any) -> Union[LLMOutput, Iterator[LLMOutput]]:
+        pass
+
+    @trace_llm
+    async def acall(self, *args: Any, **kwargs: Any) -> Union[LLMOutput, AsyncIterator[LLMOutput]]:
+        pass
+```
+
+agentUniverse通过`@trace_llm`装饰器实现，agent在调用对应LLM
+call/acall方法时，采集模型prompt和response，将信息json序列化后存储到上文监控配置对应的本地存储目录下，以jsonl文件的形式按小时为单位分割。
+
+#### 具体效果
+
+调用agentUniverse sample工程中的demo_rag_agent，使用qwen-turbo模型，query为分析下巴菲特减持比亚迪的原因，模型调用追踪功能捕捉到的数据如下：
+
+```json
+{
+  "source": "QWenOpenAIStyleLLM.acall",
+  "date": "2024-06-24 16:27:14",
+  "llm_input": {
+    "messages": [
+      {
+        "role": "system",
+        "content": "你是一位精通信息分析的ai助手。\\n 你的目标是判断问题对应的答案是否提供了有价值的信息，并对问题的答案做出建议和评价"
+      },
+      {
+        "role": "user",
+        "content": "你需要遵守的规则是:\\n1. 必须使用中文结合查询的背景信息结合你所拥有的知识回答用户提出的问题。\\n2. 结构化答案生成，必要时通过空行提升阅读体验。\\n 需要回答的问题是: 分析下巴菲特减持比亚迪的原因\\n"
+      }
+    ]
+  },
+  "kwargs": {
+    "model": "qwen-turbo",
+    "stream": false,
+    "n": 1,
+    "temperature": 0.5,
+    "max_tokens": 1000
+  },
+  "llm_output": "巴菲特减持比亚迪股票的原因可以从几个方面来分析：\\n\\n1. **投资策略调整**：尽管巴菲特通常倾向于长期持有优质股票，但投资组合管理需要灵活性。他可能会根据市场动态、行业趋势和个人评估的变化，适时调整持仓以优化资产配置或分散风险。\\n\\n2. **估值与预期回报**：减持可能反映了巴菲特对比亚迪当前股价与他内在价值评估的差距。尽管比亚迪业绩强劲，但如果他认为股价过高，可能会选择部分兑现利润。\\n 综上所述，巴菲特减持比亚迪股票可能是基于上述因素的综合考虑，但具体原因只有巴菲特和芒格本人了解。值得注意的是，尽管减持，他们对比亚迪的长期看好并未改变，这从芒格的演讲和持续的股东大会支持可以看出。"
+}
+```
+
+- **`source`**: agent运行时LLM的调用来源
+- **`date`**: LLM调用时间
+- **`llm_input`**: LLM调用message及模型参数
+- **`llm_output`**: LLM输出文本段信息
+
+### Agent调用追踪
+
+#### trace_agent装饰器
+
+agentUniverse通过`@trace_agent`装饰器实现，agent在调用run方法时，采集agent输入和输出，将信息json序列化后存储到上文监控配置对应的本地存储目录下，以jsonl文件的形式按小时及单智能体为单位分割。
+
+#### 具体效果
+
+调用agentUniverse sample工程中的demo_rag_agent，query为分析下巴菲特减持比亚迪的原因，agent调用追踪功能捕捉到的数据如下：
+
+```json
+{
+  "source": "demo_rag_agent",
+  "date": "2024-06-27 19:26:46",
+  "agent_input": {
+    "kwargs": {
+      "input": "分析下巴菲特减持比亚迪的原因"
+    }
+  },
+  "agent_output": {
+    "chat_history": [
+      {
+        "content": "分析下巴菲特减持比亚迪的原因",
+        "type": "human"
+      },
+      {
+        "content": "巴菲特减持比亚迪的原因可能涉及多个方面：\n\n1. **投资回报与资产配置**：随着比亚迪股价的大幅上涨，特别是新能源汽车业务的强劲表现，巴菲特可能认为已经达到其预期的回报，需要将资本转向其他潜在收益更高的投资。\n\n2. **芒格影响减弱**：芒格去世后，巴菲特作为伯克希尔·哈撒韦的唯一决策者，投资策略可能会有所调整，这可能影响他对比亚迪的投资态度。\n\n3. **资本结构调整**：巴菲特可能寻求更均衡的投资组合，通过减持比亚迪来优化伯克希尔·哈撒韦的整体资产配置。\n\n4. **风险控制**：持股比例降低至5%以下后，巴菲特的减持速度可能会加快，这可能是为了降低单一投资的风险。\n\n5. **市场动态**：在比亚迪股价下跌时未大幅减持，可能表明他之前是在等待一个更合适的市场时机。\n\n综合以上分析，巴菲特减持比亚迪的原因可能包含对投资回报的追求、对公司估值的判断以及个人投资策略的更新。然而，具体原因还需更多官方信息来确认。",
+        "type": "ai"
+      }
+    ],
+    "background": "针对巴菲特减持比亚迪的原因，目前市场依然处于猜想的状态，但从近年来的投资举动来看，也大概可以看出巴菲特减持比亚迪的一些想法。 我们可以从巴菲特 ... 为何巴菲特减持比亚迪？ 综合多家媒体的分析报道，巴菲特减持比亚迪股份可能是出于多种考虑，包括为了更好地配置资本、实现投资回报、投资策略的调整以及 ... 有私募人士分析认为，巴菲特从2008年建仓至今，比亚迪在新能源汽车的快速渗透下，营收和利润也达到了空前的规模，股价近30倍的涨幅，伯克希尔减持比亚迪 ... 对于巴菲特减持原因，相关人士表示，“公司在和对方沟通。”问及公司估值是否偏高，上述人士表示，“公司经营状况良好，销量、利润等保持增长。” 6月18日， ... 据证券时报e公司报道，中泰国际策略分析师颜招骏认为，巴菲特减持应该是看到长线的基本面发生变化或估值已经大幅偏离内在价值。一旦持股比例降至5%， ... 在比亚迪股票处于大幅下跌的阶段，伯克希尔哈撒韦则采取了观望的态度，减持力度并未有太明显。对股神巴菲特来说，在股价处于高位的时候获利了结、锁定 ... 相较于常规动力电池，刀片电池内部体积利用率增长了50%以上，整体体积能量密度可以媲美高能量密度的三元锂电池，能够在保证安全的前提下，提升新能源车的 ... ... 巴菲特第一次减持比亚迪了。从最初的19.92%到现在的5.99%，巴菲特对比亚迪的投资似乎正在逐步减少。有分析师指出，一旦持股比例降至5%，巴菲特的减持速度可能会加快。 巴菲特减持比亚迪的真实原因如何？对此，有各种各样的分析。 有的从地缘 ... 有的从地缘政治切入，有的从芒格去世后，巴菲特独掌大权后的风格切换进行分析， ... 市场分析认为，巴菲特的减持可能是为了更好地配置资本，并且进行获利了结。巴菲特本人也曾表示，减持比亚迪是为了找到这些资金更好的配置用途。同时， ...",
+    "date": "2024-06-27",
+    "input": "分析下巴菲特减持比亚迪的原因",
+    "output": "巴菲特减持比亚迪的原因可能涉及多个方面：\n\n1. **投资回报与资产配置**：随着比亚迪股价的大幅上涨，特别是新能源汽车业务的强劲表现，巴菲特可能认为已经达到其预期的回报，需要将资本转向其他潜在收益更高的投资。\n\n2. **芒格影响减弱**：芒格去世后，巴菲特作为伯克希尔·哈撒韦的唯一决策者，投资策略可能会有所调整，这可能影响他对比亚迪的投资态度。\n\n3. **资本结构调整**：巴菲特可能寻求更均衡的投资组合，通过减持比亚迪来优化伯克希尔·哈撒韦的整体资产配置。\n\n4. **风险控制**：持股比例降低至5%以下后，巴菲特的减持速度可能会加快，这可能是为了降低单一投资的风险。\n\n5. **市场动态**：在比亚迪股价下跌时未大幅减持，可能表明他之前是在等待一个更合适的市场时机。\n\n综合以上分析，巴菲特减持比亚迪的原因可能包含对投资回报的追求、对公司估值的判断以及个人投资策略的更新。然而，具体原因还需更多官方信息来确认。"
+  }
+}
+```
+
+- **`source`**: Agent运行时的调用来源（智能体名称）
+- **`date`**: Agent调用时间
+- **`agent_input`**: Agent调用输入参数
+- **`agent_output`**: Agent输出参数
\ No newline at end of file
diff --git "a/docs/guidebook/zh/3_1_2_0_\346\250\241\345\236\213\345\210\227\350\241\250.md" "b/docs/guidebook/zh/3_1_2_0_\346\250\241\345\236\213\345\210\227\350\241\250.md"
index 5e62a724..6a7fbed6 100644
--- "a/docs/guidebook/zh/3_1_2_0_\346\250\241\345\236\213\345\210\227\350\241\250.md"
+++ "b/docs/guidebook/zh/3_1_2_0_\346\250\241\345\236\213\345\210\227\350\241\250.md"
@@ -10,6 +10,9 @@
 | [百川](3_1_2_百川使用.md)              |
 | [Claude](3_1_2_Claude使用.md)      |
 | [ollama](3_1_2_Ollama使用.md)      |
+| [DeepSeek](3_1_2_DeepSeek使用.md)      |
+
+为方便用户接入OpenAI风格协议的模型，提供基于OpenAI通用协议接入包装对象 [OpenAIStyleLLM](3_1_2_OpenAIStyleLLM使用.md)。
 
 未在列表中的模型您可以根据[模型定义](2_2_2_模型定义与使用.md)中的步骤自定义接入任何模型。
 
diff --git "a/docs/guidebook/zh/3_1_2_DeepSeek\344\275\277\347\224\250.md" "b/docs/guidebook/zh/3_1_2_DeepSeek\344\275\277\347\224\250.md"
new file mode 100644
index 00000000..7a243ed2
--- /dev/null
+++ "b/docs/guidebook/zh/3_1_2_DeepSeek\344\275\277\347\224\250.md"
@@ -0,0 +1,35 @@
+# DeepSeek 使用
+## 1. 创建相关文件
+创建一个yaml文件，例如 user_deepseek_llm.yaml
+将以下内容粘贴到您的user_deepseek_llm.yaml文件当中
+```yaml
+name: 'user_deepseek_llm'
+description: 'default default_deepseek_llm llm with spi'
+model_name: 'deepseek-chat'
+max_tokens: 1000
+metadata:
+  type: 'LLM'
+  module: 'agentuniverse.llm.default.deep_seek_openai_style_llm'
+  class: 'DefaultDeepSeekLLM'
+```
+## 2. 环境设置
+### 2.1 通过python代码配置
+必须配置：DEEPSEEK_API_KEY  
+可选配置：DEEPSEEK_API_BASE
+```python
+import os
+os.environ['DEEPSEEK_API_KEY'] = 'sk-***'
+os.environ['DEEPSEEK_API_BASE'] = 'https://xxxxxx'
+```
+### 2.2 通过配置文件配置
+在项目的config目录下的custom_key.toml当中，添加配置：
+```toml
+DEEPSEEK_API_KEY="sk-******"
+DEEPSEEK_API_BASE="https://xxxxxx"
+```
+## 3. DEEPSEEK API KEY 获取
+参考 DEEPSEEK 官方文档：https://platform.deepseek.com/api_keys
+
+## 4. Tips
+在agentuniverse中，我们已经创建了一个name为default_deepseek_llm的llm,用户在配置DEEPSEEK_API_KEY之后可以直接使用。
+
diff --git "a/docs/guidebook/zh/3_1_2_OpenAIStyleLLM\344\275\277\347\224\250.md" "b/docs/guidebook/zh/3_1_2_OpenAIStyleLLM\344\275\277\347\224\250.md"
new file mode 100644
index 00000000..e2078d9c
--- /dev/null
+++ "b/docs/guidebook/zh/3_1_2_OpenAIStyleLLM\344\275\277\347\224\250.md"
@@ -0,0 +1,39 @@
+# OpenAIStyleLLM 使用
+通过该配置，您可以连接任何遵守OpenAI标准的模型服务
+## 1. 创建相关文件
+创建一个yaml文件，例如 user_openai_style_llm.yaml
+将以下内容粘贴到您的user_openai_style_llm.yaml文件当中
+```yaml
+name: 'deep_seek_llm'
+description: 'demo deep_seek llm with spi'
+model_name: 'deepseek-chat'
+max_tokens: 4000
+max_context_length: 32000
+api_key_env: 'DEEPSEEK_API_KEY'
+api_base_env: 'DEEPSEEK_API_BASE'
+metadata:
+  type: 'LLM'
+  module: 'agentuniverse.llm.openai_style_llm'
+  class: 'OpenAIStyleLLM'
+```
+参数说明：
+    max_context_length: 模型所能承接的上下文
+    api_key_env: api key的env变量名
+    api_base_env: api base的env变量名
+上述参数必须配置,服务启动时会从环境变量中加载相关的值
+## 2. 环境设置
+必须配置：$api_key_env, $api_base_env
+配置文件中api_key_env与api_base_env分别为DEEPSEEK_API_KEY、DEEPSEEK_API_BASE，所以配置如下：
+### 2.1 通过python代码配置
+```python
+import os
+os.environ['DEEPSEEK_API_KEY'] = 'sk-***'
+os.environ['DEEPSEEK_API_BASE'] = 'https://xxxxxx'
+```
+### 2.2 通过配置文件配置
+在项目的config目录下的custom_key.toml当中，添加配置：
+```toml
+DEEPSEEK_API_KEY="DEEPSEEK_API_KEY"
+DEEPSEEK_API_BASE="https://xxxxxx"
+```
+注意，这里必须与配置文件中锁配置的api_key_env、api_base_env一致
diff --git "a/docs/guidebook/zh/6_1_\350\201\224\347\263\273\346\210\221\344\273\254.md" "b/docs/guidebook/zh/6_1_\350\201\224\347\263\273\346\210\221\344\273\254.md"
index 86c11e9d..f15bbfc4 100644
--- "a/docs/guidebook/zh/6_1_\350\201\224\347\263\273\346\210\221\344\273\254.md"
+++ "b/docs/guidebook/zh/6_1_\350\201\224\347\263\273\346\210\221\344\273\254.md"
@@ -1,9 +1,24 @@
-# 联系我们
-* github: https://github.com/alipay/agentUniverse
-* gitee: https://gitee.com/agentUniverse/agentUniverse
-* gitcode: https://gitcode.com/agentUniverse
-* Stack Overflow: https://stackoverflowteams.com/c/agentuniverse/questions
-* Discord: https://discord.gg/VfhEvJzQ
-* 微信公众号: agentUniverse智多星
-* 钉钉交流群:
-![](../_picture/dingtalk_util20250429.png)
\ No newline at end of file
+### 支持
+#### 通过github issue提交疑问
+😊 我们建议您使用[github issue](https://github.com/alipay/agentUniverse/issues) 提交您的疑问, 我们通常会在2日内回复。
+
+#### 通过Discord联系我们
+😊 加入我们的 [Discord频道](https://discord.gg/DHFcdkWAhn) 与我们进行交流。
+
+#### 通过钉钉群联系我们
+😊 加入我们的钉钉答疑群与我们联系。
+![](../_picture/dingtalk_util20250429.png)
+
+#### 通过管理员Email联系我们
+😊 Email: [jerry.zzw@antgroup.com](mailto:jerry.zzw@antgroup.com)
+
+#### 微信公众号
+
+😊 公众号ID：**agentUniverse智多星**
+
+![](../_picture/wechat_official.png)
+
+更多相关的文章与资讯你可以在微信公众号中获取。
+
+#### twitter
+ID: [@agentuniverse_](https://x.com/agentuniverse_)
\ No newline at end of file
diff --git "a/docs/guidebook/zh/7_1_1_\347\277\273\350\257\221\346\241\210\344\276\213.md" "b/docs/guidebook/zh/7_1_1_\347\277\273\350\257\221\346\241\210\344\276\213.md"
new file mode 100644
index 00000000..bd32cdec
--- /dev/null
+++ "b/docs/guidebook/zh/7_1_1_\347\277\273\350\257\221\346\241\210\344\276\213.md"
@@ -0,0 +1,58 @@
+# 翻译案例
+近期，斯坦福大学教授吴恩达开源了一个AI智能体机器翻译——一个使用反思工作流进行翻译的智能体，该项目中演示了反思智能体工作流的机器翻译示例。智能体的主要步骤如下：
+1. 初始翻译，使用大模型（LLM）将文本从source_language翻译为target_language;
+2. 进行反思，让大模型指出翻译结果中的不足，并给出建设性的改进建议；
+3. 修改翻译，让大模型根据反思给出的建议，重新进行翻译；
+项目中采用的反思工作流，让模型自己去发现不足，再根据不足做定向的修改，是一种典型的多智能体协同工作机制，这也是agentUniverse一直涉足的领域，于是我就有将这个翻译智能体复刻到agentUniverse上面的想法。
+
+## 多智能体的协同工作过程
+翻译过程中，优先判断模型的长度是否超过了模型所能承受的最大token,针对超过模型长度的情况,先对文本进行切块，再对分块后的文本进行翻译，
+但是无论长文本还是短文本，翻译过程都是基于初始翻译->反思->修改的流程进行的。
+![多智能体协同工作流程](../_picture/translation_flow_graph.png)
+
+## 在aU中的实现
+在aU中实现该翻译的过程主要分为以下几步：
+1. 定义翻译相关的prompt，短文本翻译三个，长文本翻译三个，相关文件如下:  
+[短文本翻译init prmpt](../../../sample_standard_app/app/core/prompt/translation/translation_init_en.yaml)  
+[短文本翻译reflection prmpt](../../../sample_standard_app/app/core/prompt/translation/translation_reflection_en.yaml)  
+[短文本翻译improve prmpt](../../../sample_standard_app/app/core/prompt/translation/translation_improve_en.yaml)  
+[长文本翻译init prmpt](../../../sample_standard_app/app/core/prompt/translation/multi_translation_init_en.yaml)  
+[长文本翻译reflection prmpt](../../../sample_standard_app/app/core/prompt/translation/multi_translation_improve_en.yaml)  
+[长文本翻译improve prmpt](../../../sample_standard_app/app/core/prompt/translation/multi_translation_improve_en.yaml)  
+在aU中,可以很容易的功过配置文件定义prompt，并统一由PromptManager管理。
+  
+
+2. 定义三个智能体  
+[短文本翻译智能体](../../../sample_standard_app/app/core/agent/translation_agent_case/translation_work_agent.yaml)  
+[短文本翻译智能体](../../../sample_standard_app/app/core/agent/translation_agent_case/translation_reflection_agent.yaml)  
+[短文本翻译智能体](../../../sample_standard_app/app/core/agent/translation_agent_case/translation_improve_agent.yaml)  
+该智能体当中，需要根据执行的时长文本翻译还是短文本翻译切换对应的prompt，具体逻辑可参考[代码实现](../../../sample_standard_app/app/core/agent/translation_agent_case/translation_agent.py)  
+由于定义的prompt全部由PromptManager进行管理，这里可以很容易的实现prompt的切换
+    
+
+3. 定义三个智能体的协同工作过程  
+协同过程可参考前面介绍的多智能体协同工作过程的流程图,具体的实现逻辑如图：    
+![协同工作](../_picture/translation_execute_flow.png)    
+更细的流程可以参考[代码文件](../../../sample_standard_app/app/core/agent/translation_agent_case/translation_by_token_agent.py)  
+协同智能体的[配置文件](../../../sample_standard_app/app/core/agent/translation_agent_case/translation_agent.yaml)
+
+### 演示代码
+[代码链接](../../../sample_standard_app/app/test/test_translation_agent.py)
+
+[长翻译文本](../../../sample_standard_app/app/test/translation_data/long_text.txt)  
+[短翻译文本](../../../sample_standard_app/app/test/translation_data/short_text.txt)  
+
+[短翻译结果](../../../sample_standard_app/app/test/translation_data/short_text_result.txt)  
+[长翻译结果](../../../sample_standard_app/app/test/translation_data/long_text_result.txt)  
+
+### 演示结果
+可以看到，使用aU与原本的translation_agent原工程翻译结果保持一致，复刻成功。  
+aU的执行结果:  
+![aU执行长文本结果](../_picture/long_translation_au.png)    
+  
+Translation_agent的执行结果:  
+![translation执行长文本结果](../_picture/long_translation_wu.png)  
+
+### 其他
+1. 在参考吴恩达教授的代码当中，处理分块翻译时，为了保证翻译的连贯性，翻译每一个分块时，会携带相应的上下文。但是在他的代码当中将所有的翻译内容都放在的上下文当中，会使切分失去原本的意义，某些情况下会导致token超过模型所能接受的最大token，针对此问题我在对应的仓库地址提问了相关[issue](https://github.com/andrewyng/translation-agent/issues/28)
+2. 该案例基于千问大模型，使用前需要您在环境变量中配置`DASHSCOPE_API_KEY`。
\ No newline at end of file
diff --git "a/docs/guidebook/zh/8_1_1_\346\225\260\346\215\256\350\207\252\346\262\273\346\231\272\350\203\275\344\275\223.md" "b/docs/guidebook/zh/8_1_1_\346\225\260\346\215\256\350\207\252\346\262\273\346\231\272\350\203\275\344\275\223.md"
new file mode 100644
index 00000000..be903610
--- /dev/null
+++ "b/docs/guidebook/zh/8_1_1_\346\225\260\346\215\256\350\207\252\346\262\273\346\231\272\350\203\275\344\275\223.md"
@@ -0,0 +1,172 @@
+# 数据自治智能体
+## 介绍
+
+数据自治智能体全貌：通过**自动化批量执行多轮智能体调用**，**离线自适应数据采集**，**生产评测数据集**，**生产微调数据集**，**模型推理训练**，**数据集多维度自动评估**等完整的workflow，以强化大模型和Agent的数据自治流程。
+
+当前agentUniverse开放了**数据自治MVP（最小可行产品）版本**，根据用户指定的**问题集**，**自动化批量执行多轮智能体调用**，**生产评测数据集**，**数据集多维度自动评估**，**产出评测报告**，将数据自治思想传递到开源社区，后续将陆续开放数据自治workflow完整能力。
+
+## 背景
+
+当前，行业内对Agent智能体效果的测评，通常需要依赖于特定领域的专家进行大量的人工评审和标注，以确保评估结果的高质量和准确性。
+
+dataAgent希望通过智能体本身的能力，对Agent数据进行**自采集、自管理，以及智能化评判**。
+
+在我们开放的mvp版本中，您可以通过`dataset_build_agent`智能体对于待评测的问题集进行多轮次的批量调用，生产评测数据集；之后通过`dataset_eval_agent`智能体采用蚂蚁公布的Fin-Eva数据评测标准基于7个维度（相关性、事实性、合理性、时效性、结构性、整体性、全面性）进行智能体数据评估和标注，将多轮次评测结果进行丰富的统计学分析，以提供给用户更直观的Agent能力变化。
+
+通过一整套数据自治能力，可以非常轻松的通过智能化产出的评测报告，了解到您的智能体当前处于什么水平。
+
+需要特别说明的是，整个评测报告分数为参考值，在实际投产过程中，我们将多轮多次得分进行综合对比，以分辨智能体效果好坏。
+
+
+## dataAgent流程图
+![data_agent_flowchart](../_picture/data_agent_flowchart.jpg)
+- data_agent包含两部分，**dataset_build_agent**负责自动化批量执行多轮智能体调用，生产评测数据集
+- **dataset_eval_agent**负责自动化多维度评估数据集，产出评测报告
+
+## dataAgent执行步骤
+### step1 建立智能体问题集
+在dataAgent中，首先需要构建一个智能体问题集，以jsonl文件格式，其中每一行代表一次智能体调用的完整输入。
+
+如下所示，建立3条问题集，input对应智能体的query信息：
+```jsonl
+{"input": "帮我预测下2024欧洲杯冠军"}
+{"input": "半导体还能继续持有吗"}
+{"input": "北京今天天气如何"}
+```
+### step2 配置dataAgent
+配置dataAgent智能体，如下所示，配置文件除智能体基本配置外，主要包含两个重要项，`dataset_builder`对应生产评测数据集的智能体名称，`dataset_evaluator`对应数据集评估标注的智能体名称。
+```yaml
+info:
+  name: 'data_agent'
+  description: 'data agent'
+plan:
+  planner:
+    dataset_builder: 'dataset_build_agent'
+    dataset_evaluator: 'dataset_eval_agent'
+metadata:
+  type: 'AGENT'
+  module: 'sample_standard_app.app.core.agent.data_agent_case.data_agent'
+  class: 'DataAgent'
+```
+[data_agent配置文件样例地址](../../../sample_standard_app/app/core/agent/data_agent_case/data_agent.yaml)
+
+[data_agent代码地址](../../../sample_standard_app/app/core/agent/data_agent_case/data_agent.py)
+
+### step3 配置生产评测数据集的智能体
+以step2中`dataset_builder`配置的**dataset_build_agent**，如下所示为dataset_build_agent的配置文件，配置文件除智能体基本配置外，主要包含两个重要项，`candidate`配置待评测的智能体名称（如评测demo_rag_agent效果，candidate配置demo_rag_agent），`concurrency_level`配置批量执行智能体调用时的并发度（如配置5，代表并发5调用candidate智能体）
+```yaml
+info:
+  name: 'dataset_build_agent'
+  description: 'dataset build agent'
+profile:
+  concurrency_level: 1
+plan:
+  planner:
+    candidate: 'demo_rag_agent'
+metadata:
+  type: 'AGENT'
+  module: 'sample_standard_app.app.core.agent.data_agent_case.dataset_build_agent'
+  class: 'DatasetBuildAgent'
+```
+[dataset_build_agent配置文件样例地址](../../../sample_standard_app/app/core/agent/data_agent_case/dataset_build_agent.yaml)
+
+[dataset_build_agent代码地址](../../../sample_standard_app/app/core/agent/data_agent_case/dataset_build_agent.py)
+
+### step4 配置数据集评估标注的智能体
+以step2中`dataset_evaluator`配置的**dataset_eval_agent**，如下所示为dataset_eval_agent的配置文件，配置文件除智能体基本配置外，主要包含两个重要项，`llm_model`配置智能体模型，`max_eval_lines`配置评测数据行数（如配置10代表只评估前10条评测数据，避免全局评测，消耗巨大token量）
+```yaml
+info:
+  name: 'dataset_eval_agent'
+  description: 'dataset eval agent'
+profile:
+  prompt_version: dataset_eval_agent.cn
+  max_eval_lines: 10
+  llm_model:
+    name: 'qwen_llm'
+    model_name: 'qwen2-72b-instruct'
+    temperature: 0.1
+metadata:
+  type: 'AGENT'
+  module: 'sample_standard_app.app.core.agent.data_agent_case.dataset_eval_agent'
+  class: 'DatasetEvalAgent'
+```
+[dataset_eval_agent配置文件样例地址](../../../sample_standard_app/app/core/agent/data_agent_case/dataset_eval_agent.yaml)
+
+[dataset_eval_agent代码地址](../../../sample_standard_app/app/core/agent/data_agent_case/dataset_eval_agent.py)
+
+### step5 运行dataAgent
+通过 [dataAgent代码入口](../../../sample_standard_app/app/examples/data_agent.py)，分别配置两个参数，`queryset_path`代表问题集路径，`turn`代表问题集总体执行轮次，一键启动dataAgent。
+
+tips: 请合理配置问题集及具体评测行数，以免造成大量算力及token损耗。
+
+## dataAgent使用示例
+参考上文**dataAgent执行步骤**，通过5步，启动配置好的dataAgent。
+
+### 评测数据集
+首先生成评测数据集，以jsonl文件的格式存储智能体的q&a对。
+如下图所示：
+ - query: 评测数据问题
+ - answer: 评测数据答案
+
+![data_agent_dataset](../_picture/data_agent_dataset.png)
+
+[dataAgent生产的评测数据集样例地址](../../../sample_standard_app/app/examples/data/dataset_turn_1_2024-07-10-10-48-30.jsonl)
+
+### 完整评测结果
+生产评测数据集后，dataAgent开始数据多维度评估标注，产出完整评测结果（若执行多轮dataAgent跑批任务，则产出多个完整评测结果）。
+
+如下图所示: 
+ - Line Number: 当前评测数据在数据集中的行数
+ - Overall Score: 综合分数 = 多个维度的评估分数总和 / 评估维度个数（满分5分，分数范围0-5）
+ - Query: 评测数据问题
+ - Answer: 评测数据答案
+ - 相关性 Score: 代表评测数据答案与问题的相关性，分数越高越相关（满分5分，分数范围0-5）
+ - 相关性 Suggestion: 代表相关性维度存在的问题和改进建议
+ - 更多维度 Score/Suggestion 以此类推
+![data_agent_eval_result](../_picture/data_agent_eval_result.png)
+
+评估节点发现的问题：
+ - 例如第1条数据在**相关性维度的suggestion**: 虽然回答了关于北京天气的问题，但提供的温度单位为华氏度，与国内用户习惯的摄氏度不符，建议转换为摄氏度并提供更全面的天气信息，如湿度、风力等。
+ - 例如第3条数据在**事实性维度的suggestion**: 回答中包含事实错误，如将阿根廷球星莱昂内尔·梅西错误地归入英格兰队。优化建议是确保所有提及的数据和事实准确无误，尤其是在涉及具体人物和事件时。
+
+[dataAgent生产的完整评测结果样例地址](../../../sample_standard_app/app/examples/data/eval_result_turn_1_2024-07-10-10-48-30.xlsx)
+
+### 综合评测报告
+根据多轮完整的评测结果，生成一份综合评测报告。
+
+如下图所示: 
+ - Line Name: 包含两种类型，如`Queryset Turn x`代表根据问题集第x轮生成的评测数据集, `Turn Avg Score`代表多轮多维度的平均分数
+ - Overall Avg Score: 单轮数据集中所有数据的综合分数总和 / 数据集中对应数据量（满分5分，分数范围0-5）
+ - 相关性 Avg Score: 单轮数据集中所有数据的相关性分数总和 / 数据集中对应数据量（满分5分，分数范围0-5）
+ - 更多维度 Avg Score 以此类推
+![data_agent_eval_report](../_picture/data_agent_eval_report.png)
+
+[dataAgent生产的综合评测报告样例地址](../../../sample_standard_app/app/examples/data/eval_report_2024-07-10-10-48-30.xlsx)
+
+### 对比实验
+调整aU中`demo_rag_agent`中的模型从上文生产评测报告时的**qwen1.5-7b-chat**改为**qwen1.5-72b-chat**，通过dataAgent评测后，生成的综合评测报告如下:
+
+下图为模型为qwen1.5-7b-chat时，数据自治智能体产出的综合评测报告:
+![data_agent_eval_report](../_picture/data_agent_eval_report.png)
+
+下图为模型为qwen1.5-72b-chat时，数据自治智能体产出的综合评测报告:
+![data_agent_eval_report](../_picture/data_agent_eval_report_qwen72b.png)
+对比两次综合评测报告，可以看到智能体模型从qwen1.5-7b-chat改为qwen1.5-72b-chat后，各维度多轮评分均存在大幅度上升，以此方法快速分辨智能体配置变更后，智能体效果差异。
+
+
+## dataAgent详细说明
+### data_agent
+- [配置文件](../../../sample_standard_app/app/core/agent/data_agent_case/data_agent.yaml)
+- [智能体文件](../../../sample_standard_app/app/core/agent/data_agent_case/data_agent.py)
+
+### dataset_build_agent
+- [配置文件](../../../sample_standard_app/app/core/agent/data_agent_case/dataset_build_agent.yaml)
+- [智能体文件](../../../sample_standard_app/app/core/agent/data_agent_case/dataset_build_agent.py)
+- dataset_build_agent生产的评测数据以jsonl格式本地存储（jsonl文件名称为dataset_turn_{i}_{date}，`i`代表轮次，`date`代表生成时间）
+
+### dataset_eval_agent
+- [配置文件](../../../sample_standard_app/app/core/agent/data_agent_case/dataset_eval_agent.yaml)
+- [智能体文件](../../../sample_standard_app/app/core/agent/data_agent_case/dataset_eval_agent.py)
+- [提示词文件](../../../sample_standard_app/app/core/prompt/dataset_eval_agent_cn.yaml)：agentUniverse当前开放了6种产业中验证有效的智能体评估标准（MVP版本未开放**全面性维度**，当前全面性评估标准偏向金融领域，故未在开源社区中提及）
+- dataset_eval_agent生产的**完整评测结果**以excel格式本地存储（文件名称为eval_result_turn_{i}_{date}，`i`代表轮次，`date`代表生成时间）
+- dataset_eval_agent生产的**综合评测报告**以excel格式本地存储（文件名称为eval_report_{date}，date代表生成时间）
\ No newline at end of file
diff --git "a/docs/guidebook/zh/9_1_\347\240\224\347\251\266\346\226\207\347\214\256.md" "b/docs/guidebook/zh/9_1_\347\240\224\347\251\266\346\226\207\347\214\256.md"
new file mode 100644
index 00000000..6b333775
--- /dev/null
+++ "b/docs/guidebook/zh/9_1_\347\240\224\347\251\266\346\226\207\347\214\256.md"
@@ -0,0 +1,17 @@
+### 文献
+agentUniverse项目基于以下的研究成果支撑。
+
+BibTeX formatted
+```text
+@misc{wang2024peerexpertizingdomainspecifictasks,
+      title={PEER: Expertizing Domain-Specific Tasks with a Multi-Agent Framework and Tuning Methods}, 
+      author={Yiying Wang and Xiaojing Li and Binzhu Wang and Yueyang Zhou and Han Ji and Hong Chen and Jinshi Zhang and Fei Yu and Zewei Zhao and Song Jin and Renji Gong and Wanqing Xu},
+      year={2024},
+      eprint={2407.06985},
+      archivePrefix={arXiv},
+      primaryClass={cs.AI},
+      url={https://arxiv.org/abs/2407.06985}, 
+}
+```
+文献简介：该文献在研究实验部分分别从**完整性、相关性、紧凑性、事实性、逻辑性、结构性和全面性七个维度进行打分（各纬度满分为5分）**，**PEER模式在每个测评维度的平均分数均高于BabyAGI**，且在**完整性、相关性、逻辑性、结构性和全面性五个纬度有显著优势**；同时PEER模式在 GPT-3.5 turbo (16k) 模型下相较于 BabyAGI 的择优胜率达到 83%，在 GPT-4o 模型下择优胜率达到 81%，更多详情请阅读文献。
+https://arxiv.org/pdf/2407.06985
\ No newline at end of file
diff --git a/pyproject.toml b/pyproject.toml
index 089d1fcb..4efbd6b2 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
 [tool.poetry]
 name = "agentUniverse"
-version = "0.0.9"
+version = "0.0.11"
 description = "agentUniverse is a framework for developing applications powered by multi-agent base on large language model."
 
 authors = ["AntGroup <jerry.zzw@antgroup.com>"]
@@ -52,6 +52,10 @@ anthropic = "^0.26.0"
 ollama = '^0.2.1'
 langchain-anthropic = '^0.1.13'
 numpy = '^1.26.0'
+pandas = "^2.2.2"
+pyarrow = "^16.1.0"
+duckduckgo-search = "^6.1.7"
+wikipedia= "^1.4.0"
 
 [tool.poetry.extras]
 log_ext = ["aliyun-log-python-sdk"]
diff --git a/sample_standard_app/app/core/agent/data_agent_case/__init__.py b/sample_standard_app/app/core/agent/data_agent_case/__init__.py
new file mode 100644
index 00000000..cc95020c
--- /dev/null
+++ b/sample_standard_app/app/core/agent/data_agent_case/__init__.py
@@ -0,0 +1,7 @@
+# !/usr/bin/env python3
+# -*- coding:utf-8 -*-
+
+# @Time    : 2024/7/3 16:57
+# @Author  : wangchongshi
+# @Email   : wangchongshi.wcs@antgroup.com
+# @FileName: __init__.py.py
diff --git a/sample_standard_app/app/core/agent/data_agent_case/data_agent.py b/sample_standard_app/app/core/agent/data_agent_case/data_agent.py
new file mode 100644
index 00000000..89020e67
--- /dev/null
+++ b/sample_standard_app/app/core/agent/data_agent_case/data_agent.py
@@ -0,0 +1,86 @@
+# !/usr/bin/env python3
+# -*- coding:utf-8 -*-
+
+# @Time    : 2024/7/1 15:50
+# @Author  : wangchongshi
+# @Email   : wangchongshi.wcs@antgroup.com
+# @FileName: data_agent.py
+import datetime
+
+from agentuniverse.agent.agent import Agent
+from agentuniverse.agent.agent_manager import AgentManager
+from agentuniverse.agent.input_object import InputObject
+from agentuniverse.agent.output_object import OutputObject
+from agentuniverse.base.util.logging.logging_util import LOGGER
+
+
+class DataAgent(Agent):
+    """Data Agent class."""
+
+    def input_keys(self) -> list[str]:
+        """Return the input keys of the Agent."""
+        return ['queryset_path']
+
+    def output_keys(self) -> list[str]:
+        """Return the output keys of the Agent."""
+        return []
+
+    def parse_input(self, input_object: InputObject, agent_input: dict) -> dict:
+        """Agent parameter parsing.
+
+        Args:
+            input_object (InputObject): input parameters passed by the user.
+            agent_input (dict): agent input preparsed by the agent.
+        Returns:
+            dict: agent input parsed from `input_object` by the user.
+        """
+        return {}
+
+    def parse_result(self, planner_result: dict) -> dict:
+        """Planner result parser.
+
+        Args:
+            planner_result(dict): Planner result
+        Returns:
+            dict: Agent result object.
+        """
+        return planner_result
+
+    def execute(self, input_object: InputObject, agent_input: dict):
+        """Execute agent instance.
+
+        Args:
+            input_object (InputObject): input parameters passed by the user.
+            agent_input (dict): agent input parsed from `input_object` by the user.
+        """
+        date = datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S")
+        input_object.add_data('date', date)
+
+        # step1: build q&a dataset from the candidate agent which needs to be evaluated.
+        query_answer_list = self.dataset_build_agent(input_object)
+        input_object.add_data('query_answer_list', query_answer_list)
+
+        # step2: evaluate q&a dataset generated by the candidate agent and generate evaluation report.
+        eval_report_list = self.dataset_eval_agent(input_object)
+        return {'query_answer_list': query_answer_list, 'eval_report_list': eval_report_list}
+
+    def dataset_build_agent(self, input_object: InputObject):
+        """Build q&a dataset from the candidate agent which needs to be evaluated."""
+
+        planner = self.agent_model.plan.get('planner', {})
+        dataset_build_agent: Agent = AgentManager().get_instance_obj(planner.get('dataset_builder'))
+        if dataset_build_agent is None:
+            raise ValueError('The agent instance corresponding to `dataset_builder` parameter is empty')
+        output: OutputObject = dataset_build_agent.run(**input_object.to_dict())
+        return output.get_data('query_answer_list', [])
+
+    def dataset_eval_agent(self, input_object: InputObject):
+        """Evaluate q&a dataset generated by the candidate agent and generate evaluation report."""
+
+        planner = self.agent_model.plan.get('planner', {})
+        dataset_eval_agent: Agent = AgentManager().get_instance_obj(planner.get('dataset_evaluator'))
+        if dataset_eval_agent is None:
+            LOGGER.warn("The agent instance corresponding to `dataset_evaluator` parameter is empty")
+            return []
+        output: OutputObject = dataset_eval_agent.run(**input_object.to_dict())
+        return output.get_data('eval_report_json_list', [])
diff --git a/sample_standard_app/app/core/agent/data_agent_case/data_agent.yaml b/sample_standard_app/app/core/agent/data_agent_case/data_agent.yaml
new file mode 100644
index 00000000..0a782015
--- /dev/null
+++ b/sample_standard_app/app/core/agent/data_agent_case/data_agent.yaml
@@ -0,0 +1,11 @@
+info:
+  name: 'data_agent'
+  description: 'data agent'
+plan:
+  planner:
+    dataset_builder: 'dataset_build_agent'
+    dataset_evaluator: 'dataset_eval_agent'
+metadata:
+  type: 'AGENT'
+  module: 'sample_standard_app.app.core.agent.data_agent_case.data_agent'
+  class: 'DataAgent'
\ No newline at end of file
diff --git a/sample_standard_app/app/core/agent/data_agent_case/dataset_build_agent.py b/sample_standard_app/app/core/agent/data_agent_case/dataset_build_agent.py
new file mode 100644
index 00000000..2a5d6ab1
--- /dev/null
+++ b/sample_standard_app/app/core/agent/data_agent_case/dataset_build_agent.py
@@ -0,0 +1,138 @@
+# !/usr/bin/env python3
+# -*- coding:utf-8 -*-
+
+# @Time    : 2024/7/5 15:07
+# @Author  : wangchongshi
+# @Email   : wangchongshi.wcs@antgroup.com
+# @FileName: dataset_build_agent.py
+from concurrent.futures import ThreadPoolExecutor, wait, ALL_COMPLETED
+from typing import Tuple, List, Any, Optional
+
+from agentuniverse.agent.agent import Agent
+from agentuniverse.agent.agent_manager import AgentManager
+from agentuniverse.agent.input_object import InputObject
+from agentuniverse.agent.output_object import OutputObject
+from agentuniverse.base.util.logging.logging_util import LOGGER
+from sample_standard_app.app.util.jsonl_file_utils import JsonFileWriter, JsonFileReader
+
+
+class DatasetBuildAgent(Agent):
+    """Dataset Build Agent class."""
+
+    executor: Optional[Any] = ThreadPoolExecutor(max_workers=1, thread_name_prefix="data_agent")
+
+    def input_keys(self) -> list[str]:
+        """Return the input keys of the Agent."""
+        return ['queryset_path']
+
+    def output_keys(self) -> list[str]:
+        """Return the output keys of the Agent."""
+        return ['query_answer_list']
+
+    def parse_input(self, input_object: InputObject, agent_input: dict) -> dict:
+        """Agent parameter parsing.
+
+        Args:
+            input_object (InputObject): input parameters passed by the user.
+            agent_input (dict): agent input preparsed by the agent.
+        Returns:
+            dict: agent input parsed from `input_object` by the user.
+        """
+        agent_input['queryset_path'] = input_object.get_data('queryset_path')
+        agent_input['turn'] = input_object.get_data('turn', 1)
+        agent_input['candidate'] = input_object.get_data('candidate')
+        return agent_input
+
+    def parse_result(self, planner_result: dict) -> dict:
+        """Planner result parser.
+
+        Args:
+            planner_result(dict): Planner result
+        Returns:
+            dict: Agent result object.
+        """
+        return planner_result
+
+    def execute(self, input_object: InputObject, agent_input: dict):
+        """Execute agent instance.
+
+        Args:
+            input_object (InputObject): input parameters passed by the user.
+            agent_input (dict): agent input parsed from `input_object` by the user.
+        """
+        # init thread pool
+        profile = self.agent_model.profile or {}
+        self.executor = ThreadPoolExecutor(
+            max_workers=profile.get('concurrency_level') if profile.get('concurrency_level') else 1,
+            thread_name_prefix="data_agent")
+
+        # step1: build q&a dataset from the candidate agent which needs to be evaluated.
+        query_answer_list = self.build_dataset(agent_input)
+        input_object.add_data('query_answer_list', query_answer_list)
+
+        LOGGER.info("-------------------------------------------")
+        LOGGER.info("End: build q&a dataset from the candidate agent done.")
+        LOGGER.info("-------------------------------------------")
+
+        # step2: write the q&a dataset to json file.
+        date = input_object.get_data('date', '')
+        for i in range(len(query_answer_list)):
+            one_turn_query_answer_list = query_answer_list[i]
+            json_writer = JsonFileWriter(f'dataset_turn_{i + 1}_{date}')
+            json_writer.write_json_query_answer_list(one_turn_query_answer_list)
+        LOGGER.info(f"Progress: write the q&a dataset to local jsonl files.")
+        return {'query_answer_list': query_answer_list}
+
+    def build_dataset(self, agent_input: dict) -> List[List[Tuple[str, str]]]:
+        """Build q&a dataset from the candidate agent which needs to be evaluated."""
+
+        candidate_agent_name = agent_input.get('candidate') \
+            if agent_input.get('candidate') else self.agent_model.plan.get('planner', {}).get('candidate', '')
+        # get the candidate agent which needs to be evaluated
+        candidate_agent: Agent = AgentManager().get_instance_obj(candidate_agent_name)
+        if not candidate_agent:
+            raise ValueError('The agent instance corresponding to `candidate` parameter is empty')
+
+        # init jsonl file reader
+        jsonl_file_reader = JsonFileReader(agent_input.get('queryset_path'))
+        # read query list
+        query_list = jsonl_file_reader.read_json_obj_list()
+        if not query_list:
+            raise ValueError('query list information read from queryset_path is empty')
+
+        # init the input and output key in agent
+        first_input_key = candidate_agent.input_keys()[0]
+        first_output_key = candidate_agent.output_keys()[0]
+
+        query_answer_list = []
+
+        for i in range(agent_input.get('turn')):
+            LOGGER.info("-------------------------------------------")
+            LOGGER.info(f"Start: build q&a dataset from the candidate agent `{candidate_agent_name}`, turn {i + 1}.")
+            one_turn_query_answer_list = []
+            futures_to_query = {}
+
+            # single turn query and answer processing.
+            for j in range(len(query_list)):
+                query_dict: dict = query_list[j]
+                if query_dict:
+                    # run the target agent
+                    future = self.executor.submit(candidate_agent.run, **query_dict)
+                    futures_to_query[future] = query_dict
+
+            done, not_done = wait(futures_to_query.keys(), return_when=ALL_COMPLETED)
+
+            for future in done:
+                output_object: OutputObject = future.result()
+                # note: the first index of input_keys and output_keys is identified as the prompt and answer.
+                query = futures_to_query.get(future, {}).get(first_input_key, '')
+                answer = output_object.get_data(first_output_key, '')
+
+                one_turn_query_answer_list.append((query, answer))
+                LOGGER.info(f"Progress: the turn {i + 1} query: `{query}` has generated the answer successfully.")
+
+            LOGGER.info(f"End: the turn {i + 1} has generated the answer successfully.")
+
+            # build q&a dataset
+            query_answer_list.append(one_turn_query_answer_list)
+        return query_answer_list
diff --git a/sample_standard_app/app/core/agent/data_agent_case/dataset_build_agent.yaml b/sample_standard_app/app/core/agent/data_agent_case/dataset_build_agent.yaml
new file mode 100644
index 00000000..2d310094
--- /dev/null
+++ b/sample_standard_app/app/core/agent/data_agent_case/dataset_build_agent.yaml
@@ -0,0 +1,12 @@
+info:
+  name: 'dataset_build_agent'
+  description: 'dataset build agent'
+profile:
+  concurrency_level: 1
+plan:
+  planner:
+    candidate: 'demo_rag_agent'
+metadata:
+  type: 'AGENT'
+  module: 'sample_standard_app.app.core.agent.data_agent_case.dataset_build_agent'
+  class: 'DatasetBuildAgent'
\ No newline at end of file
diff --git a/sample_standard_app/app/core/agent/data_agent_case/dataset_eval_agent.py b/sample_standard_app/app/core/agent/data_agent_case/dataset_eval_agent.py
new file mode 100644
index 00000000..0f764e10
--- /dev/null
+++ b/sample_standard_app/app/core/agent/data_agent_case/dataset_eval_agent.py
@@ -0,0 +1,349 @@
+# !/usr/bin/env python3
+# -*- coding:utf-8 -*-
+
+# @Time    : 2024/7/1 17:00
+# @Author  : wangchongshi
+# @Email   : wangchongshi.wcs@antgroup.com
+# @FileName: dataset_eval_agent.py
+from typing import Tuple, List
+
+from langchain_core.output_parsers import StrOutputParser
+from langchain_core.utils.json import parse_json_markdown
+from openpyxl.reader.excel import load_workbook
+import pandas as pd
+
+from agentuniverse.agent.agent import Agent
+from agentuniverse.agent.input_object import InputObject
+from agentuniverse.base.util.logging.logging_util import LOGGER
+from agentuniverse.llm.llm import LLM
+from agentuniverse.llm.llm_manager import LLMManager
+from agentuniverse.prompt.chat_prompt import ChatPrompt
+from agentuniverse.prompt.prompt import Prompt
+from agentuniverse.prompt.prompt_manager import PromptManager
+from agentuniverse.prompt.prompt_model import AgentPromptModel
+
+
+class DatasetEvalAgent(Agent):
+    """Dataset Evaluation Agent class."""
+
+    def input_keys(self) -> list[str]:
+        """Return the input keys of the Agent."""
+        return ['query_answer_list']
+
+    def output_keys(self) -> list[str]:
+        """Return the output keys of the Agent."""
+        return ['eval_report_json_list', 'eval_dims_json_list']
+
+    def parse_input(self, input_object: InputObject, agent_input: dict) -> dict:
+        """Agent parameter parsing.
+
+        Args:
+            input_object (InputObject): input parameters passed by the user.
+            agent_input (dict): agent input preparsed by the agent.
+        Returns:
+            dict: agent input parsed from `input_object` by the user.
+        """
+        agent_input['query_answer_list'] = input_object.get_data('query_answer_list')
+        return agent_input
+
+    def parse_result(self, planner_result: dict) -> dict:
+        """Planner result parser.
+
+        Args:
+            planner_result(dict): Planner result
+        Returns:
+            dict: Agent result object.
+        """
+        return planner_result
+
+    def execute(self, input_object: InputObject, agent_input: dict):
+        """Execute agent instance.
+
+        Args:
+            input_object (InputObject): input parameters passed by the user.
+            agent_input (dict): agent input parsed from `input_object` by the user.
+        """
+        LOGGER.info("-------------------------------------------")
+        LOGGER.info(f"Start: use the evaluator agent to evaluate q&a dataset.")
+        LOGGER.info("-------------------------------------------")
+
+        query_answer_list: List[List[Tuple[str, str]]] = input_object.get_data('query_answer_list')
+        max_eval_lines = self.agent_model.profile.get('max_eval_lines', 100)
+        if len(query_answer_list) == 0:
+            raise ValueError('the `query_answer_list` is empty')
+
+        # step1: evaluate the dataset in multiple dimensions and give specific scores.
+        eval_dims_json_list: List[List[dict]] = self.eval(query_answer_list, max_eval_lines)
+        LOGGER.info(f"End: evaluate the dataset in multiple dimensions done.")
+
+        LOGGER.info("-------------------------------------------")
+        # step2: write the eval results to Excel file.
+        self.generate_eval_results_excel(query_answer_list, eval_dims_json_list, input_object.get_data('date', ''))
+
+        # step3: generate eval report
+        eval_report_json_list = self.generate_eval_report(eval_dims_json_list, input_object.get_data('date', ''))
+        LOGGER.info(f"End: generate evaluation report done.")
+        LOGGER.info("-------------------------------------------")
+        return {'eval_report_json_list': eval_report_json_list, 'eval_dims_json_list': eval_dims_json_list}
+
+    def eval(self, query_answer_list: List[List[Tuple[str, str]]], max_eval_lines: int) -> List[List[dict]]:
+        """Evaluate the dataset in multiple dimensions and give specific scores.
+
+        Args:
+            query_answer_list (List[List[Tuple[str, str]]]): the list of q&a pair from multiple turns,
+            the type of single turn is List[Tuple[str, str]].
+
+            max_eval_lines (int): the maximum number of lines to evaluate.
+
+        Returns:
+            res (List[List[dict]]): the list of eval results from multiple turns,
+            the type of single turn is List[dict].
+        """
+
+        eval_dims_json_list = []
+        # the q&a dataset from multiple turns.
+        for i in range(len(query_answer_list)):
+            line_num = 0
+            one_turn_query_answer_list = query_answer_list[i]
+            one_turn_eval_dims_json_list = []
+
+            # single turn query answer list.
+            for j in range(len(one_turn_query_answer_list)):
+
+                query = one_turn_query_answer_list[j][0]
+                answer = one_turn_query_answer_list[j][1]
+                if query is None or answer is None:
+                    break
+
+                line_num += 1
+                if line_num > max_eval_lines:
+                    break
+
+                if len(query) > 2000:
+                    query = query[0:2000]
+                if len(answer) > 5000:
+                    answer = answer[0:5000]
+
+                version_prompt: ChatPrompt = self.handle_prompt()
+
+                llm: LLM = self.handle_llm()
+
+                chain = version_prompt.as_langchain() | llm.as_langchain() | StrOutputParser()
+                res = chain.invoke(input={'query': query, 'answer': answer})
+
+                dim_score_json = {'line': line_num}
+                dimensions = []
+                overall_score = 0.0
+
+                try:
+                    if res is not None:
+                        data = parse_json_markdown(res)
+                        dimensions = data['dimensions']
+                        # calculate overall score from multiple dimensions.
+                        overall_score = sum(data['score'] for data in dimensions)
+                except Exception as e:
+                    LOGGER.warn(f'except[eval_query_answer_from_jsonl]>>> res: {res}, exception: {e}')
+                    continue
+                if len(dimensions) > 0:
+                    overall_score = overall_score / len(dimensions)
+                dim_score_json['overall_score'] = overall_score
+                dim_score_json['dimensions'] = dimensions
+                LOGGER.info(f"Progress: the turn {i + 1} query line {line_num} has been evaluated successfully.")
+
+                # single line evaluation from multiple dimensions.
+                one_turn_eval_dims_json_list.append(dim_score_json)
+
+            eval_dims_json_list.append(one_turn_eval_dims_json_list)
+        return eval_dims_json_list
+
+    def handle_prompt(self) -> ChatPrompt:
+        """Prompt module processing."""
+        profile: dict = self.agent_model.profile
+
+        profile_prompt_model: AgentPromptModel = AgentPromptModel(introduction=profile.get('introduction'),
+                                                                  target=profile.get('target'),
+                                                                  instruction=profile.get('instruction'))
+
+        # get the prompt by the prompt version
+        prompt_version: str = profile.get('prompt_version')
+        version_prompt: Prompt = PromptManager().get_instance_obj(prompt_version)
+
+        if version_prompt is None and not profile_prompt_model:
+            raise Exception("Either the `prompt_version` or `introduction & target & instruction`"
+                            " in agent profile configuration should be provided.")
+        if version_prompt:
+            version_prompt_model: AgentPromptModel = AgentPromptModel(
+                introduction=getattr(version_prompt, 'introduction', ''),
+                target=getattr(version_prompt, 'target', ''),
+                instruction=getattr(version_prompt, 'instruction', ''))
+            profile_prompt_model = profile_prompt_model + version_prompt_model
+
+        return ChatPrompt().build_prompt(profile_prompt_model, ['introduction', 'target', 'instruction'])
+
+    def handle_llm(self) -> LLM:
+        """Language model module processing.
+
+        Returns:
+            LLM: The language model.
+        """
+        llm_name = self.agent_model.profile.get('llm_model').get('name')
+        llm: LLM = LLMManager().get_instance_obj(component_instance_name=llm_name, new_instance=True)
+        llm.set_by_agent_model(**self.agent_model.profile.get('llm_model'))
+        return llm
+
+    def generate_eval_report(self, eval_dims_json_list: List[List[dict]], date: str):
+        """Integrate multidimensional evaluation scores and generate evaluation report
+
+        Args:
+            eval_dims_json_list (List[List[dict]]) : The list of evaluation results from multiple turns,
+            the type of single turn is List[dict].
+
+            date (str): The date of the evaluation.
+        Returns:
+            eval_report_json_list (List[dict]): The list of evaluation report.
+        """
+        LOGGER.info(f"Start: generate evaluation report.")
+
+        eval_report_json_list = []
+        for i in range(0, len(eval_dims_json_list)):
+            line_num = 0
+            overall_avg_score = 0.0
+            dim_avg_score = {}
+            # single turn eval dim json list.
+            one_turn_eval_dims_json_list = eval_dims_json_list[i]
+            for j in range(0, len(one_turn_eval_dims_json_list)):
+                one_row_eval_dims_json = one_turn_eval_dims_json_list[j]
+                line_num += 1
+
+                overall_avg_score += one_row_eval_dims_json['overall_score']
+                dimensions = one_row_eval_dims_json['dimensions']
+                for k in range(0, len(dimensions)):
+                    name = dimensions[k]['name']
+                    score = dimensions[k]['score']
+                    if name in dim_avg_score:
+                        dim_avg_score[name] += float(score)
+                    else:
+                        dim_avg_score[name] = float(score)
+
+            # calculate single turn overall avg score and dim avg score.
+            for key in dim_avg_score:
+                dim_total_score = dim_avg_score[key]
+                dim_avg_score[key] = dim_total_score / line_num
+            overall_avg_score = overall_avg_score / line_num
+
+            # generate one turn report.
+            one_turn_report = {
+                'line_name': f"Queryset Turn {i + 1}",
+                'overall_avg_score': overall_avg_score,
+                'dim_avg_score': dim_avg_score
+            }
+            LOGGER.info(f"Progress: turn {i + 1} evaluation report has generated successfully.")
+            eval_report_json_list.append(one_turn_report)
+
+        if len(eval_report_json_list) > 1:
+            self.generate_total_eval_report(eval_report_json_list)
+            LOGGER.info(f"Progress: total evaluation report has generated successfully.")
+
+        # generate excel report
+        self.generate_eval_report_excel(eval_report_json_list, date)
+        return eval_report_json_list
+
+    @staticmethod
+    def generate_total_eval_report(eval_report_json_list: List[dict]):
+        """Generate total evaluation report, integrate and calculate the total evaluation score for each turn.
+
+        Args:
+            eval_report_json_list (List[dict]): The list of evaluation report.
+        """
+
+        if len(eval_report_json_list) > 1:
+            total_avg_score = 0.0
+            total_dim_avg_score = {}
+            for i in range(len(eval_report_json_list)):
+                total_avg_score += eval_report_json_list[i]['overall_avg_score']
+                dim_avg_score: dict = eval_report_json_list[i]['dim_avg_score']
+                for key in dim_avg_score:
+                    if key in total_dim_avg_score:
+                        total_dim_avg_score[key] += float(dim_avg_score[key])
+                    else:
+                        total_dim_avg_score[key] = float(dim_avg_score[key])
+            total_avg_score = total_avg_score / len(eval_report_json_list)
+            for key in total_dim_avg_score:
+                total_dim_avg_score[key] = total_dim_avg_score[key] / len(eval_report_json_list)
+            report_line_obj = {
+                'line_name': 'Turn Avg Score',
+                'overall_avg_score': total_avg_score,
+                'dim_avg_score': total_dim_avg_score
+            }
+            eval_report_json_list.append(report_line_obj)
+
+    @staticmethod
+    def generate_eval_results_excel(query_answer_list: List[List[Tuple[str, str]]],
+                                    eval_dims_json_list: List[List[dict]], date: str):
+        """Generate evaluation results in excel format."""
+
+        columns: List[str] = ['Line Number', 'Overall Score', 'Query', 'Answer']
+        if len(eval_dims_json_list) > 0 and len(eval_dims_json_list[0]) > 0:
+            one_row_eval_result = eval_dims_json_list[0][0]
+            dims = one_row_eval_result.get('dimensions', [])
+            # wrap excel columns
+            for dim in dims:
+                columns.append(dim['name'] + ' Score')
+                columns.append(dim['name'] + ' Suggestion')
+
+            for i in range(len(eval_dims_json_list)):
+                one_turn_eval_results = eval_dims_json_list[i]
+                one_turn_query_answers = query_answer_list[i]
+                rows = []
+                # write for each turn
+                for j in range(len(one_turn_eval_results)):
+                    one_row_eval_result = one_turn_eval_results[j]
+                    one_row_query_answer = one_turn_query_answers[j]
+                    # wrap rows.
+                    line_number = one_row_eval_result['line']
+                    overall_score = one_row_eval_result['overall_score']
+                    dims = one_row_eval_result['dimensions']
+
+                    row = [line_number, overall_score, one_row_query_answer[0], one_row_query_answer[1]]
+                    for dim in dims:
+                        row.append(dim['score'])
+                        row.append(dim['suggestion'])
+                    rows.append(row)
+
+                df = pd.DataFrame(rows, columns=columns)
+
+                df.to_excel(f"./data/eval_result_turn_{i + 1}_{date}.xlsx", index=False, engine='openpyxl')
+            LOGGER.info(f"Progress: generate evaluation detailed results in excel format successfully.")
+            LOGGER.info("-------------------------------------------")
+
+    @staticmethod
+    def generate_eval_report_excel(eval_report_json_list: List[dict], date: str):
+        """Generate excel eval report."""
+
+        rows = []
+        columns: List[str] = ['Line Name', 'Overall Avg Score']
+        dim_avg_scores = eval_report_json_list[0]['dim_avg_score']
+        for dim, score in dim_avg_scores.items():
+            columns.append(dim + ' Avg Score')
+        for item in eval_report_json_list:
+            line_name = item['line_name']
+            overall_avg_score = item['overall_avg_score']
+            dim_avg_scores = item['dim_avg_score']
+
+            row = [line_name, overall_avg_score]
+            for dim, score in dim_avg_scores.items():
+                row.append(score)
+            rows.append(row)
+
+        df = pd.DataFrame(rows, columns=columns)
+
+        df.to_excel(f"./data/eval_report_{date}.xlsx", index=False, engine='openpyxl')
+
+        # tweak column width
+        workbook = load_workbook(f"./data/eval_report_{date}.xlsx")
+        worksheet = workbook.active
+        column_widths = [25, 20] + [20] * (len(columns) - 2)
+        for i, column_width in enumerate(column_widths, 1):
+            worksheet.column_dimensions[chr(64 + i)].width = column_width
+        workbook.save(f"./data/eval_report_{date}.xlsx")
+        LOGGER.info(f"Progress: generate evaluation excel file successfully.")
diff --git a/sample_standard_app/app/core/agent/data_agent_case/dataset_eval_agent.yaml b/sample_standard_app/app/core/agent/data_agent_case/dataset_eval_agent.yaml
new file mode 100644
index 00000000..23bf0a46
--- /dev/null
+++ b/sample_standard_app/app/core/agent/data_agent_case/dataset_eval_agent.yaml
@@ -0,0 +1,14 @@
+info:
+  name: 'dataset_eval_agent'
+  description: 'dataset eval agent'
+profile:
+  prompt_version: dataset_eval_agent.cn
+  max_eval_lines: 10
+  llm_model:
+    name: 'qwen_llm'
+    model_name: 'qwen2-72b-instruct'
+    temperature: 0.1
+metadata:
+  type: 'AGENT'
+  module: 'sample_standard_app.app.core.agent.data_agent_case.dataset_eval_agent'
+  class: 'DatasetEvalAgent'
\ No newline at end of file
diff --git a/sample_standard_app/app/core/agent/rag_agent_case/demo_multillm_agent.yaml b/sample_standard_app/app/core/agent/rag_agent_case/demo_multillm_agent.yaml
index 2fd13785..8732f8a1 100644
--- a/sample_standard_app/app/core/agent/rag_agent_case/demo_multillm_agent.yaml
+++ b/sample_standard_app/app/core/agent/rag_agent_case/demo_multillm_agent.yaml
@@ -15,8 +15,10 @@ profile:
 #    model_name: 'Baichuan2-Turbo'
 #    name: 'qwen_llm'
 #    model_name: 'qwen-turbo'
-    name: 'wenxin_llm'
-    model_name: 'ERNIE-3.5-8K'
+#    name: 'wenxin_llm'
+#    model_name: 'ERNIE-3.5-8K'
+#    name: 'deep_seek_llm'
+    name: 'default_deepseek_llm'
 plan:
   planner:
     name: 'rag_planner'
diff --git a/sample_standard_app/app/core/agent/rag_agent_case/demo_rag_agent.yaml b/sample_standard_app/app/core/agent/rag_agent_case/demo_rag_agent.yaml
index fecdd274..d2641e06 100644
--- a/sample_standard_app/app/core/agent/rag_agent_case/demo_rag_agent.yaml
+++ b/sample_standard_app/app/core/agent/rag_agent_case/demo_rag_agent.yaml
@@ -2,29 +2,9 @@ info:
   name: 'demo_rag_agent'
   description: 'demo rag agent'
 profile:
-  introduction: 你是一位精通信息分析的ai助手。
-  target: 你的目标是判断问题对应的答案是否提供了有价值的信息，并对问题的答案做出建议和评价。
-  instruction: |
-    你需要遵守的规则是:
-    1. 必须使用中文结合查询的背景信息结合你所拥有的知识回答用户提出的问题。
-    2. 结构化答案生成，必要时通过空行提升阅读体验。
-    3. 不采用背景信息中的错误信息。
-    4. 要考虑答案和问题的相关性，不做对问题没有帮助的回答。
-    5. 详尽回答问题，重点突出，不过多花哨词藻。
-    6. 不说模糊的推测。
-    7. 尽量多的使用数值类信息。
-
-    背景信息是:
-    {background}
-  
-    之前的对话:
-    {chat_history}
-    
-    开始!
-
-    需要回答的问题是: {input}
+  prompt_version: demo_rag_agent.cn
   llm_model:
-    name: 'default_qwen_llm'
+    name: 'qwen_llm'
 #    model_name: 'gpt-4o'
 plan:
   planner:
diff --git a/sample_standard_app/app/core/agent/rag_agent_case/law_rag_agent.yaml b/sample_standard_app/app/core/agent/rag_agent_case/law_rag_agent.yaml
index bf917fcd..03ced866 100644
--- a/sample_standard_app/app/core/agent/rag_agent_case/law_rag_agent.yaml
+++ b/sample_standard_app/app/core/agent/rag_agent_case/law_rag_agent.yaml
@@ -1,6 +1,6 @@
 info:
   name: 'law_rag_agent'
-  description: 'law rag agent'
+  description: '一个法律顾问，可以根据给出的事件，以及提供的背景知识做出客观的司法判断。'
 profile:
   introduction: 你是一位精通信息分析的ai法律顾问。
   target: 你的目标是根据给出的事件，以及提供的背景知识做出客观的司法判断。
diff --git a/sample_standard_app/app/core/agent/react_agent_case/demo_react_agent.yaml b/sample_standard_app/app/core/agent/react_agent_case/demo_react_agent.yaml
index 8a38838d..b9a4e02a 100644
--- a/sample_standard_app/app/core/agent/react_agent_case/demo_react_agent.yaml
+++ b/sample_standard_app/app/core/agent/react_agent_case/demo_react_agent.yaml
@@ -5,11 +5,17 @@ profile:
   prompt_version: qwen_react_agent.cn
   llm_model:
     name: 'default_qwen_llm'
+    model_name: 'qwen-max'
     temperature: 0
 action:
   tool:
     - 'google_search_tool'
     - 'python_runner'
+  knowledge:
+    - 'civil_law_knowledge'
+    - 'criminal_law_knowledge'
+  agent:
+    - 'law_rag_agent'
 plan:
   planner:
     name: 'react_planner'
diff --git a/sample_standard_app/app/core/agent/translation_agent_case/translation_agent.py b/sample_standard_app/app/core/agent/translation_agent_case/translation_agent.py
new file mode 100644
index 00000000..82f18ff9
--- /dev/null
+++ b/sample_standard_app/app/core/agent/translation_agent_case/translation_agent.py
@@ -0,0 +1,41 @@
+# !/usr/bin/env python3
+# -*- coding:utf-8 -*-
+
+# @Time    : 2024/6/25 16:56
+# @Author  : weizjajj 
+# @Email   : weizhongjie.wzj@antgroup.com
+# @FileName: translation_planner.py
+
+import copy
+from agentuniverse.agent.plan.planner.planner import Planner
+from agentuniverse.agent.plan.planner.planner_manager import PlannerManager
+
+from agentuniverse.agent.agent import Agent
+from agentuniverse.agent.input_object import InputObject
+
+
+class TranslationAgent(Agent):
+    def input_keys(self) -> list[str]:
+        return self.agent_model.profile.get('input_keys')
+
+    def output_keys(self) -> list[str]:
+        return self.agent_model.profile.get('output_keys')
+
+    def parse_input(self, input_object: InputObject, agent_input: dict) -> dict:
+        for key in input_object.to_dict():
+            agent_input[key] = input_object.get_data(key)
+        return agent_input
+
+    def parse_result(self, planner_result: dict) -> dict:
+        return planner_result
+
+    def execute(self, input_object: InputObject, agent_input: dict) -> dict:
+        planner_base: Planner = PlannerManager().get_instance_obj(self.agent_model.plan.get('planner').get('name'))
+        agent_model = copy.deepcopy(self.agent_model)
+        translation_type = input_object.get_data('execute_type')
+        if translation_type == "multi":
+            agent_model.profile['prompt_version'] = translation_type + "_" + agent_model.profile['prompt_version']
+        if input_object.get_data('country') and self.agent_model.info.get('name') == 'translation_reflection_agent':
+            agent_model.profile['prompt_version'] = "country_" + agent_model.profile['prompt_version']
+        planner_result = planner_base.invoke(agent_model, agent_input, input_object)
+        return planner_result
diff --git a/sample_standard_app/app/core/agent/translation_agent_case/translation_agent.yaml b/sample_standard_app/app/core/agent/translation_agent_case/translation_agent.yaml
new file mode 100644
index 00000000..be1943f1
--- /dev/null
+++ b/sample_standard_app/app/core/agent/translation_agent_case/translation_agent.yaml
@@ -0,0 +1,21 @@
+info:
+  name: 'translation_by_token_agent'
+  description: '翻译Agent'
+profile:
+  tracing: false
+  prompt_version: 'one_chunk_improve.en'
+  input_keys: ['source_lang','target_lang','source_text']
+  output_keys: ['output']
+  llm_model:
+    name: 'default_qwen_llm'
+    max_tokens: 1000
+plan:
+action:
+  tool:
+#    - 'google_search_tool'
+memory:
+  name: ''
+metadata:
+  type: 'AGENT'
+  module: 'sample_standard_app.app.core.agent.translation_agent_case.translation_by_token_agent'
+  class: 'TranslationAgent'
\ No newline at end of file
diff --git a/sample_standard_app/app/core/agent/translation_agent_case/translation_by_token_agent.py b/sample_standard_app/app/core/agent/translation_agent_case/translation_by_token_agent.py
new file mode 100644
index 00000000..0e142c2b
--- /dev/null
+++ b/sample_standard_app/app/core/agent/translation_agent_case/translation_by_token_agent.py
@@ -0,0 +1,116 @@
+# !/usr/bin/env python3
+# -*- coding:utf-8 -*-
+from queue import Queue
+
+# @Time    : 2024/6/25 16:56
+# @Author  : weizjajj 
+# @Email   : weizhongjie.wzj@antgroup.com
+# @FileName: translation_planner.py
+
+from agentuniverse.agent.agent_manager import AgentManager
+
+from agentuniverse.base.util.logging.logging_util import LOGGER
+from langchain_text_splitters import RecursiveCharacterTextSplitter
+
+from agentuniverse.agent.agent import Agent
+from agentuniverse.agent.input_object import InputObject
+from agentuniverse.llm.llm import LLM
+from agentuniverse.llm.llm_manager import LLMManager
+
+
+def calculate_chunk_size(token_count: int, token_limit: int) -> int:
+    if token_count <= token_limit:
+        return token_count
+
+    num_chunks = (token_count + token_limit - 1) // token_limit
+    chunk_size = token_count // num_chunks
+
+    remaining_tokens = token_count % token_limit
+    if remaining_tokens > 0:
+        chunk_size += remaining_tokens // num_chunks
+
+    return chunk_size
+
+
+def output_middle_result(input_object: InputObject, data: any):
+    output_stream: Queue = input_object.get_data('output_stream',None)
+    if output_stream:
+        output_stream.put(data)
+
+
+class TranslationAgent(Agent):
+    def input_keys(self) -> list[str]:
+        return self.agent_model.profile.get('input_keys')
+
+    def output_keys(self) -> list[str]:
+        return self.agent_model.profile.get('output_keys')
+
+    def parse_input(self, input_object: InputObject, agent_input: dict) -> dict:
+        for key in input_object.to_dict():
+            if key == 'output_stream':
+                continue
+            agent_input[key] = input_object.get_data(key)
+        return agent_input
+
+    def parse_result(self, planner_result: dict) -> dict:
+        return planner_result
+
+    def execute_agents(self, input_object: InputObject, planner_input: dict) -> dict:
+        work_agent = 'translation_work_agent'
+        reflection_agent = 'translation_reflection_agent'
+        improve_agent = 'translation_improve_agent'
+
+        init_agent_result = self.execute_agent(work_agent, planner_input)
+        LOGGER.info(f"init_agent_result: {init_agent_result.to_json_str()}")
+        output_middle_result(input_object, {'init_agent_result': init_agent_result.get_data('output')})
+
+        planner_input['init_agent_result'] = init_agent_result.get_data('output')
+
+        reflection_result = self.execute_agent(reflection_agent, planner_input)
+        LOGGER.info(f"reflection_result: {reflection_result.to_json_str()}")
+        output_middle_result(input_object, {'reflection_agent_result': reflection_result.get_data('output')})
+
+        planner_input['reflection_agent_result'] = reflection_result.get_data('output')
+
+        improve_result = self.execute_agent(improve_agent, planner_input)
+        LOGGER.info(f"improve_agent_result: {improve_result.to_json_str()}")
+        output_middle_result(input_object, {'improve_agent_result': improve_result.get_data('output')})
+
+        return improve_result.to_dict()
+
+    @staticmethod
+    def execute_agent(agent_name: str, agent_input: dict):
+        agent: Agent = AgentManager().get_instance_obj(agent_name)
+        result = agent.run(**agent_input)
+        return result
+
+    def execute(self, input_object: InputObject, agent_input: dict) -> dict:
+        llm_name = self.agent_model.profile.get('llm_model').get('name')
+        llm: LLM = LLMManager().get_instance_obj(llm_name)
+        source_text = agent_input.get('source_text')
+        text_tokens = len(source_text)
+        # 这里使用最大输入token，因为必须要保证有足够的token输出翻译结果
+        if text_tokens < llm.max_tokens:
+            return self.execute_agents(input_object,agent_input)
+        agent_input['execute_type'] = 'multi'
+        chunk_result = list[str]()
+        chunk_size = calculate_chunk_size(text_tokens, llm.max_tokens)
+        source_text_chunks = RecursiveCharacterTextSplitter(chunk_size=chunk_size, chunk_overlap=0).split_text(
+            source_text)
+
+        for i in range(len(source_text_chunks)):
+            tagged_text = (
+                    "".join(source_text_chunks[0:i])
+                    + "<TRANSLATE_THIS>"
+                    + source_text_chunks[i]
+                    + "</TRANSLATE_THIS>"
+                    + "".join(source_text_chunks[i + 1:])
+            )
+            agent_input['chunk_to_translate'] = source_text_chunks[i]
+            agent_input['tagged_text'] = tagged_text
+            result = self.execute_agents(input_object,agent_input)
+            chunk_result.append(result.get('output'))
+
+        return {
+            'output': "".join(chunk_result)
+        }
diff --git a/sample_standard_app/app/core/agent/translation_agent_case/translation_improve_agent.yaml b/sample_standard_app/app/core/agent/translation_agent_case/translation_improve_agent.yaml
new file mode 100644
index 00000000..28176b94
--- /dev/null
+++ b/sample_standard_app/app/core/agent/translation_agent_case/translation_improve_agent.yaml
@@ -0,0 +1,21 @@
+info:
+  name: 'translation_improve_agent'
+  description: '翻译反思Agent'
+profile:
+  prompt_version: 'translation_improve.en'
+  input_keys: ['source_lang','target_lang','source_text','init_agent_result','reflection_agent_result']
+  output_keys: ['output']
+  llm_model:
+    name: 'default_qwen_llm'
+    max_tokens: 1000
+plan:
+  planner:
+    name: 'rag_planner'
+action:
+  tool:
+memory:
+  name: ''
+metadata:
+  type: 'AGENT'
+  module: 'sample_standard_app.app.core.agent.translation_agent_case.translation_agent'
+  class: 'TranslationAgent'
\ No newline at end of file
diff --git a/sample_standard_app/app/core/agent/translation_agent_case/translation_reflection_agent.yaml b/sample_standard_app/app/core/agent/translation_agent_case/translation_reflection_agent.yaml
new file mode 100644
index 00000000..5d0c4584
--- /dev/null
+++ b/sample_standard_app/app/core/agent/translation_agent_case/translation_reflection_agent.yaml
@@ -0,0 +1,21 @@
+info:
+  name: 'translation_reflection_agent'
+  description: '翻译反思Agent'
+profile:
+  prompt_version: 'translation_reflection.en'
+  input_keys: ['source_lang','target_lang','source_text','init_agent_result']
+  output_keys: ['output']
+  llm_model:
+    name: 'default_qwen_llm'
+    max_tokens: 1000
+plan:
+  planner:
+    name: 'rag_planner'
+action:
+  tool:
+memory:
+  name: ''
+metadata:
+  type: 'AGENT'
+  module: 'sample_standard_app.app.core.agent.translation_agent_case.translation_agent'
+  class: 'TranslationAgent'
\ No newline at end of file
diff --git a/sample_standard_app/app/core/agent/translation_agent_case/translation_work_agent.yaml b/sample_standard_app/app/core/agent/translation_agent_case/translation_work_agent.yaml
new file mode 100644
index 00000000..1525a197
--- /dev/null
+++ b/sample_standard_app/app/core/agent/translation_agent_case/translation_work_agent.yaml
@@ -0,0 +1,21 @@
+info:
+  name: 'translation_work_agent'
+  description: '翻译测试Agent'
+profile:
+  prompt_version: 'translation_init.en'
+  input_keys: ['source_lang','target_lang','source_text']
+  output_keys: ['output']
+  llm_model:
+    name: 'default_qwen_llm'
+    max_tokens: 1000
+plan:
+  planner:
+    name: 'rag_planner'
+action:
+  tool:
+memory:
+  name: ''
+metadata:
+  type: 'AGENT'
+  module: 'sample_standard_app.app.core.agent.translation_agent_case.translation_agent'
+  class: 'TranslationAgent'
\ No newline at end of file
diff --git a/sample_standard_app/app/core/knowledge/civil_law_knowledge.yaml b/sample_standard_app/app/core/knowledge/civil_law_knowledge.yaml
index 86ddd6b0..3cf789e9 100644
--- a/sample_standard_app/app/core/knowledge/civil_law_knowledge.yaml
+++ b/sample_standard_app/app/core/knowledge/civil_law_knowledge.yaml
@@ -1,5 +1,5 @@
 name: 'civil_law_knowledge'
-description: 'civil law knowledge'
+description: 民法知识库，可以查询民法典法律相关内容'
 metadata:
   type: 'KNOWLEDGE'
   module: 'sample_standard_app.app.core.knowledge.civil_law_knowledge'
diff --git a/sample_standard_app/app/core/knowledge/criminal_law_knowledge.yaml b/sample_standard_app/app/core/knowledge/criminal_law_knowledge.yaml
index 5a1b2a8c..184b16f9 100644
--- a/sample_standard_app/app/core/knowledge/criminal_law_knowledge.yaml
+++ b/sample_standard_app/app/core/knowledge/criminal_law_knowledge.yaml
@@ -1,5 +1,5 @@
 name: 'criminal_law_knowledge'
-description: 'criminal law knowledge'
+description: '刑法知识库，可以查询与刑法相关的内容'
 metadata:
   type: 'KNOWLEDGE'
   module: 'sample_standard_app.app.core.knowledge.criminal_law_knowledge'
diff --git a/sample_standard_app/app/core/llm/deep_seek_opneai_llm.yaml b/sample_standard_app/app/core/llm/deep_seek_opneai_llm.yaml
new file mode 100644
index 00000000..a4aebb15
--- /dev/null
+++ b/sample_standard_app/app/core/llm/deep_seek_opneai_llm.yaml
@@ -0,0 +1,11 @@
+name: 'deep_seek_llm'
+description: 'demo deep_seek llm with spi'
+model_name: 'deepseek-chat'
+max_tokens: 4000
+max_context_length: 32000
+api_key_env: 'DEEPSEEK_API_KEY'
+api_base_env: 'DEEPSEEK_API_BASE'
+metadata:
+  type: 'LLM'
+  module: 'agentuniverse.llm.openai_style_llm'
+  class: 'OpenAIStyleLLM'
\ No newline at end of file
diff --git a/sample_standard_app/app/core/llm/qwen_llm.yaml b/sample_standard_app/app/core/llm/qwen_llm.yaml
index 1115947c..57733656 100644
--- a/sample_standard_app/app/core/llm/qwen_llm.yaml
+++ b/sample_standard_app/app/core/llm/qwen_llm.yaml
@@ -1,6 +1,6 @@
 name: 'qwen_llm'
 description: 'demo qwen llm with spi'
-model_name: 'qwen-max'
+model_name: 'qwen2-72b-instruct'
 max_tokens: 2000
 metadata:
   type: 'LLM'
diff --git a/sample_standard_app/app/core/prompt/dataset_eval_agent_cn.yaml b/sample_standard_app/app/core/prompt/dataset_eval_agent_cn.yaml
new file mode 100644
index 00000000..1588c13a
--- /dev/null
+++ b/sample_standard_app/app/core/prompt/dataset_eval_agent_cn.yaml
@@ -0,0 +1,154 @@
+introduction: ｜
+  你是一个极致严谨的金融专家，需要帮助我按照如下要求在各维度评估query（用户输入）和answer（模型输出）的分数。  
+  
+  每个维度满分为5分，不符合准入条件直接判0分，符合门槛值加0-3分，如果再符合加分项要求，在门槛值的分数基础上再加0-2分。
+  打分要求，请精确到小数点后1位：
+  1.不符合准入条件（0.0分）
+  2.门槛值（0.0～3.0分）
+  3.加分项（0.0～2.0分）
+  
+  注意：严格打分，不能轻松给出高分
+instruction: |
+  --------------------------------
+    query:
+    {query}
+
+    --------------------------------
+    answer:
+    {answer}
+
+    --------------------------------
+    质量打分共6个维度，每个维度包含了不符合准入条件的要求（0.0分）/门槛值的要求（0.0～3.0分）/加分项（0.0～2.0分）
+    
+    质量打分维度描述如下:
+
+    dimension name: 相关性 
+    dimension requirement: 
+      1.不符合准入条件
+      答非所问，不相关
+
+      2.门槛值
+      能够知道到用户在问什么，并且所答即所问，包括：
+      
+      【有明确意图时】
+      识别出用户的问题并对问题有回复，且回复的内容有相关性
+      有主意图的时候，回复的内容要与主意图有相关
+      
+      【无明确意图时】
+      遇到模糊意图时进行恰当的意图反问确认，并给予准确回应
+
+      3.加分项
+      能够理解到用户在问什么问题后：
+      a、对用户的所有问题（包含情绪）都给出回应
+      b、回应的内容整体相关性都很高
+      c、回复的问题全面且易懂
+
+    --------------------------------
+    dimension name: 事实性 
+    dimension requirement: 
+      1.不符合准入条件
+      数据错误，不符合事实
+
+      2.门槛值
+      仅几个数据不准确，但不影响整体事实性
+
+      3.加分项
+      解读内容中所有引用数据真实可信，数据来源官方可信
+    --------------------------------
+
+    dimension name: 合理性 
+    dimension requirement: 
+      1.不符合准入条件
+      出现专业错误
+
+      2.门槛值
+      符合业内公认的事实逻辑，前后结论不要自相矛盾，不出现明显的专业错误
+
+      3.加分项
+      通篇解读要一以贯之、逻辑自洽，且逻辑推演是有逐层递进的（后文分析以前文结论为依据）
+
+    --------------------------------
+    dimension name: 时效性 
+    dimension requirement: 
+      1.不符合准入条件
+      数据陈旧过时，不符合现状
+
+      2.门槛值
+      数据次新，符合当下现状
+
+      3.加分项
+      引用官方发布的最新数据，包含清晰的发布日期
+
+    --------------------------------
+    dimension name: 结构性 
+    dimension requirement: 
+      1.不符合准入条件
+      答案如果是总分结构：
+        a、总论点和分论点只是抽取了原文中的部分内容，并没有真正的总结归纳
+        b、生成答案结构是总分结构，但是分论点是为了回答query而硬答，与query实际并没有关系
+        c、总结内容论点逻辑冲突
+  
+      答案如果是总结摘要结构：
+        a、摘要内容是抽取了部分段落，并没有真正的归纳总结
+        b、摘要内容，仅仅总结成一段文本，无摘要详述
+      
+      2.门槛值
+      答案如果是总分结构：
+        a、总分结构，有总结归纳，分论点有层次
+        b、答案总分结构，分论点之间有逻辑关系（互补、递进），分论点与query之间有相关性
+        c、总结的内容论点间无冲突
+  
+      答案如果是总结摘要结构：
+        a、总结内容有对原文进行归纳总结，不是抽取的原文段落
+        b、总结内容论点有展开叙述
+      
+      3.加分项
+      答案如果是总分结构：
+        a、总分结构，分论点有归类，有条理有逻辑
+        b、总分结构，分论点为1234分层结构，有条理
+  
+      答案如果是总结摘要结构：
+        a、总结内容论点叙述详细充分，有逻辑有条理
+        b、总结内容话术表达逻辑清晰，表达精炼
+    --------------------------------
+    dimension name: 整体性 
+    dimension requirement: 
+      1.不符合准入条件
+      满足以下任意一点，分数为0：
+        a、逻辑不通顺，或存在语法问题，或表达冗余内容超长
+        b、论点和论点之间存在重复：任意两条论点存在80%以上的重复度
+        c、答案存在倒装、错别字、语句不通顺、逻辑问题等
+        d、答案中存在特殊符号
+
+      2.门槛值
+        a、语句流畅、表达可阅读性强
+        b、答案表达直白（不反复说车轱辘话）
+        c、论点和论据在表达上无重复
+
+      3.加分项
+        a、答案对用户query有明确回应表达
+        b、语言简洁精炼，逻辑清晰
+
+    --------------------------------
+    输出格式要求：
+    1.根据具体打分维度要求，同时评价query和answer内容，进行打分。
+    2. 一定要给出suggestion，结合query和answer，给出具体的扣分原因和具体的优化建议。
+
+    请严格按照质量打分维度要求打分，不能轻松给出高分，请确保输出只包含如下的json格式字段，且每个字段不能为空:
+    {{
+      "dimensions": [
+          {{
+              "name":质量打分维度名称(string字符串格式),
+              "score":分数(float浮点数格式),
+              "suggestion":扣分的原因和给出的优化建议(string字符串格式)
+          }},
+          {{
+              "name":质量打分维度名称(string字符串格式),
+              "score":分数(float浮点数格式),
+              "suggestion":扣分的原因和给出的优化建议(string字符串格式)
+          }}
+      ]
+    }}
+metadata:
+  type: 'PROMPT'
+  version: 'dataset_eval_agent.cn'
diff --git a/sample_standard_app/app/core/prompt/dataset_eval_agent_en.yaml b/sample_standard_app/app/core/prompt/dataset_eval_agent_en.yaml
new file mode 100644
index 00000000..e09ad617
--- /dev/null
+++ b/sample_standard_app/app/core/prompt/dataset_eval_agent_en.yaml
@@ -0,0 +1,158 @@
+introduction: |
+  You are an extremely rigorous financial expert and need help me evaluate query (user input) and answer (model output) scores in various dimensions according to the following requirements.   
+
+  The full score for each dimension is 5 points. If you do not meet the entry conditions, you will be awarded 0 points directly, and if you meet the threshold value, you will be awarded 0-3 points. If you meet the additional requirements, you will add 0-2 points to the threshold value.
+  For scoring requirements, please be accurate to 1 decimal place:
+  1. Failure to meet access conditions (0.0 point)
+  2. Threshold value (0.0 - 3.0 points)
+  3. Bonus points (0.0 - 2.0 points)
+  
+  Note: Strict scoring and high scores cannot be easily given
+instruction: |
+  --------------------------------
+    query:
+    {query}
+
+    --------------------------------
+    answer:
+    {answer}
+
+    --------------------------------
+    There are 6 dimensions in quality scoring, each dimension contains requirements for non-compliance with access conditions (0.0 points)/threshold values (0.0 - 3.0 points)/bonus points (0.0 - 2.0 points)
+    
+    The quality scoring dimensions are described as follows:
+
+    dimension name: Relevance 
+    dimension requirement: 
+      1. non-compliance with access conditions
+      Answer is irrelevant.
+
+      2.threshold values
+      Being able to know what the user is asking, and the answer is exactly what the user is asking, including：
+  
+      【When there is a clear intention】
+      Identify user questions and respond to the questions, and the content of the reply is relevant.
+      When the question has the main intention, the reply content should be related to the main intention.
+  
+      【Without clear intention】
+      Conduct appropriate rhetorical confirmation of intention when encountering vague intentions and then give an accurate response.
+
+      3.bonus points
+      After being able to understand what questions users ask:
+      a、Respond to all user questions (including emotions)
+      b、The overall relevance of the response is very high
+      c、The answers are comprehensive and easy to understand
+
+    --------------------------------
+    dimension name: Factuality 
+    dimension requirement: 
+      1. non-compliance with access conditions
+      The data is wrong and does not conform to the facts
+
+      2.threshold values
+      Only a few data are inaccurate, but they do not affect the overall factual nature
+
+      3.bonus points
+      All quoted data in the interpretation content are true and credible, and the data source is officially credible
+    
+    --------------------------------
+    dimension name: Rationality 
+    dimension requirement: 
+      1. non-compliance with access conditions
+      Professional error occurred
+
+      2.threshold values
+      Adhere to the factual logic recognized by the industry, ensure that the conclusions are consistent and do not contradict each other, and avoid obvious professional errors.
+
+      3.bonus points
+      
+    The interpretation throughout the text must be consistent and logically coherent, with the logical reasoning advancing step by step (subsequent analysis is based on previous conclusions).
+
+    --------------------------------
+    dimension name: Timeliness 
+    dimension requirement: 
+      1. non-compliance with access conditions
+      The data is stale and no longer corresponds to the present reality.
+
+      2.threshold values
+      The data is relatively recent and aligns with the current situation.
+
+      3.bonus points
+      Cite the latest official data, including a clear publication date.
+
+    --------------------------------
+    dimension name: Structure
+    dimension requirement: 
+      1. non-compliance with access conditions
+      If the answer follows a general-specific structure:
+        a、The main thesis and sub-theses only extract parts of the content from the original text and do not truly summarize or generalize.
+        b、The structure of the answer is general-specific, but the sub-points are forced to respond to the query without actually being related to it.
+        c、The summary of the content has logical conflicts in the argument points.
+  
+      If the answer is a summary abstract structure:
+        a、The abstract content is extracted from certain paragraphs and does not truly synthesize or summarize.
+        b、The abstract content is merely summarized into a single paragraph, without a detailed abstract.
+        
+      2.threshold values
+      If the answer follows a general-specific structure:
+        a、The structure is general-specific, with summarization, and the sub-points are hierarchically organized.
+        b、The answer has a general-specific structure, with sub-points that have logical relationships (complementary, progressive), and the sub-points are relevant to the query.
+        c、Summary content without conflict between arguments
+  
+      If the answer is a summary structure:
+        a、The summary content summarizes the original text, not extracted original paragraphs
+        b、The summary content and arguments are described in an expanded manner
+      
+      3.bonus points
+      If the answer follows a general-specific structure:
+        a、The structure is general-specific, with categorized sub-points that are orderly and logical.
+        b、The structure is general-specific, with the main points organized in a hierarchical structure labeled 1, 2, 3, and 4, which is orderly.
+  
+      If the answer is a summary structure:
+        a、The summary content and arguments are detailed and sufficient, logical and organized
+        b、The summary should be expressed with clear logic and concise language.
+    
+    --------------------------------
+    dimension name: Integrity 
+    dimension requirement: 
+      1. non-compliance with access conditions
+      If any of the following points are satisfied, the score is 0:
+        a、Logic is not smooth, or there are grammatical problems, or redundant content is expressed too long
+        b、Repetition between arguments: Any two arguments have more than 80% repetition
+        c、The answers include inversion, typos, inconsistent sentences, logical problems, etc.
+        d、There are special symbols in the answer
+
+      2.threshold values
+        a、Smooth sentences and highly readable expressions
+        b、Express the answer directly (do not repeat it over and over again)
+        c、The thesis and evidence should be expressed without repetition.
+
+      3.bonus points
+        a、The answer is clearly expressed in response to user query
+        b、The language is concise, and the logic is clear
+
+    --------------------------------
+    Output format requirements:
+    1. According to the specific scoring dimension requirements, evaluate query and answer content at the same time and score.
+    2. Be sure to give the suggestion, combine query and answer, and give specific reasons for deducting points and specific optimization suggestions.
+
+    Please score strictly in accordance with the quality scoring dimensions. High scores cannot be easily given. 
+    Please ensure that the output only contains the following json format fields, and each field cannot be empty:
+  
+    {{
+      "dimensions": [
+          {{
+              "name": dimension name(string),
+              "score": score(float),
+              "suggestion": Reasons for deductions and optimization suggestions given in English(string)
+          }},
+          {{
+              "name": dimension name(string),
+              "score": score(float),
+              "suggestion": Reasons for deductions and optimization suggestions given in English(string)
+          }}
+      ]
+    }}
+metadata:
+  type: 'PROMPT'
+  version: 'dataset_eval_agent.en'
diff --git a/sample_standard_app/app/core/prompt/demo_rag_agent_cn.yaml b/sample_standard_app/app/core/prompt/demo_rag_agent_cn.yaml
new file mode 100644
index 00000000..cda9228f
--- /dev/null
+++ b/sample_standard_app/app/core/prompt/demo_rag_agent_cn.yaml
@@ -0,0 +1,24 @@
+introduction: 你是一位精通信息分析的ai助手。
+target: 你的目标是使用中文结合查询的背景信息及你所拥有的知识回答用户提出的问题。
+instruction: |
+  你需要遵守的规则是:
+  1. 必须使用中文结合查询的背景信息结合你所拥有的知识回答用户提出的问题。
+  2. 结构化答案生成，必要时通过空行提升阅读体验。
+  3. 不采用背景信息中的错误信息。
+  4. 要考虑答案和问题的相关性，不做对问题没有帮助的回答。
+  5. 详尽回答问题，重点突出，不过多花哨词藻。
+  6. 不说模糊的推测。
+  7. 尽量多的使用数值类信息。
+  
+  背景信息是:
+  {background}
+  
+  之前的对话:
+  {chat_history}
+  
+  开始!
+  
+  需要回答的问题是: {input}
+metadata:
+  type: 'PROMPT'
+  version: 'demo_rag_agent.cn'
diff --git a/sample_standard_app/app/core/prompt/demo_rag_agent_en.yaml b/sample_standard_app/app/core/prompt/demo_rag_agent_en.yaml
new file mode 100644
index 00000000..c3b96de8
--- /dev/null
+++ b/sample_standard_app/app/core/prompt/demo_rag_agent_en.yaml
@@ -0,0 +1,25 @@
+introduction:  You are an ai assistant who is proficient in information analysis.
+target: Your goal is to use English to combine the background information of the query and your knowledge to answer questions raised by users.
+instruction: |
+  The rules you need to follow are:
+  1. You must use English combined with the background information of the query and your knowledge to answer the questions raised by the user.
+  2. Structured answer generation and use blank lines to improve the reading experience if necessary.
+  3. Do not use background information that is incorrect.
+  4. Consider the relevance of the answer and question, do not answer questions that do not help.
+  5. Answer questions in detail, with emphasis on key points.
+  6. Do not make vague inferences.
+  7. Try to use numerical information as much as possible.
+  8. The answer should not exceed 500 words
+  
+  Background is:
+  {background}
+  
+  Previous conversations are:
+  {chat_history}
+  
+  Begin!
+  
+  The question needs to be answered is: {input}
+metadata:
+  type: 'PROMPT'
+  version: 'demo_rag_agent.en'
\ No newline at end of file
diff --git a/sample_standard_app/app/core/prompt/translation/country_multi_translation_reflection_en.yaml b/sample_standard_app/app/core/prompt/translation/country_multi_translation_reflection_en.yaml
new file mode 100644
index 00000000..66e45c9b
--- /dev/null
+++ b/sample_standard_app/app/core/prompt/translation/country_multi_translation_reflection_en.yaml
@@ -0,0 +1,37 @@
+introduction: You are an expert linguist specializing in translation from {source_lang} to {target_lang}.
+target: You will be provided with a source text and its translation and your goal is to improve the translation.
+instruction: |
+    Your task is to carefully read a source text and part of a translation of that text from {source_lang} to {target_lang}, and then give constructive criticism and helpful suggestions for improving the translation.
+    The final style and tone of the translation should match the style of {target_lang} colloquially spoken in {country}.
+    
+    The source text is below, delimited by XML tags <SOURCE_TEXT> and </SOURCE_TEXT>, and the part that has been translated
+    is delimited by <TRANSLATE_THIS> and </TRANSLATE_THIS> within the source text. You can use the rest of the source text
+    as context for critiquing the translated part.
+    
+    <SOURCE_TEXT>
+    {tagged_text}
+    </SOURCE_TEXT>
+    
+    To reiterate, only part of the text is being translated, shown here again between <TRANSLATE_THIS> and </TRANSLATE_THIS>:
+    <TRANSLATE_THIS>
+    {chunk_to_translate}
+    </TRANSLATE_THIS>
+    
+    The translation of the indicated part, delimited below by <TRANSLATION> and </TRANSLATION>, is as follows:
+    <TRANSLATION>
+    {init_agent_result}
+    </TRANSLATION>
+    
+    When writing suggestions, pay attention to whether there are ways to improve the translation's:\n\
+    (i) accuracy (by correcting errors of addition, mistranslation, omission, or untranslated text),\n\
+    (ii) fluency (by applying {target_lang} grammar, spelling and punctuation rules, and ensuring there are no unnecessary repetitions),\n\
+    (iii) style (by ensuring the translations reflect the style of the source text and takes into account any cultural context),\n\
+    (iv) terminology (by ensuring terminology use is consistent and reflects the source text domain; and by only ensuring you use equivalent idioms {target_lang}).\n\
+    
+    Write a list of specific, helpful and constructive suggestions for improving the translation.
+    Each suggestion should address one specific part of the translation.
+    Output only the suggestions and nothing else.
+
+metadata:
+  type: 'PROMPT'
+  version: 'country_multi_translation_reflection.en'
diff --git a/sample_standard_app/app/core/prompt/translation/country_translation_reflection_en.yaml b/sample_standard_app/app/core/prompt/translation/country_translation_reflection_en.yaml
new file mode 100644
index 00000000..433fd90e
--- /dev/null
+++ b/sample_standard_app/app/core/prompt/translation/country_translation_reflection_en.yaml
@@ -0,0 +1,29 @@
+introduction: You are an expert linguist specializing in translation from {source_lang} to {target_lang}.
+target: You will be provided with a source text and its translation and your goal is to improve the translation.
+instruction: |
+    Your task is to carefully read a source text and a translation from {source_lang} to {target_lang}, and then give constructive criticism and helpful suggestions to improve the translation. \
+    The final style and tone of the translation should match the style of {target_lang} colloquially spoken in {country}.
+    
+    The source text and initial translation, delimited by XML tags <SOURCE_TEXT></SOURCE_TEXT> and <TRANSLATION></TRANSLATION>, are as follows:
+    
+    <SOURCE_TEXT>
+    {source_text}
+    </SOURCE_TEXT>
+    
+    <TRANSLATION>
+    {init_agent_result}
+    </TRANSLATION>
+    
+    When writing suggestions, pay attention to whether there are ways to improve the translation's \n\
+    (i) accuracy (by correcting errors of addition, mistranslation, omission, or untranslated text),\n\
+    (ii) fluency (by applying {target_lang} grammar, spelling and punctuation rules, and ensuring there are no unnecessary repetitions),\n\
+    (iii) style (by ensuring the translations reflect the style of the source text and takes into account any cultural context),\n\
+    (iv) terminology (by ensuring terminology use is consistent and reflects the source text domain; and by only ensuring you use equivalent idioms {target_lang}).\n\
+    
+    Write a list of specific, helpful and constructive suggestions for improving the translation.
+    Each suggestion should address one specific part of the translation.
+    Output only the suggestions and nothing else.
+
+metadata:
+  type: 'PROMPT'
+  version: 'country_translation_reflection.en'
diff --git a/sample_standard_app/app/core/prompt/translation/multi_translation_improve_en.yaml b/sample_standard_app/app/core/prompt/translation/multi_translation_improve_en.yaml
new file mode 100644
index 00000000..675b4255
--- /dev/null
+++ b/sample_standard_app/app/core/prompt/translation/multi_translation_improve_en.yaml
@@ -0,0 +1,42 @@
+introduction: You are an expert linguist, specializing in translation editing from {source_lang} to {target_lang}.
+target: '  '
+instruction: |
+    Your task is to carefully read, then improve, a translation from {source_lang} to {target_lang}, taking into
+    account a set of expert suggestions and constructive critisms. Below, the source text, initial translation, and expert suggestions are provided.
+    
+    The source text is below, delimited by XML tags <SOURCE_TEXT> and </SOURCE_TEXT>, and the part that has been translated
+    is delimited by <TRANSLATE_THIS> and </TRANSLATE_THIS> within the source text. You can use the rest of the source text
+    as context, but need to provide a translation only of the part indicated by <TRANSLATE_THIS> and </TRANSLATE_THIS>.
+    
+    <SOURCE_TEXT>
+    {tagged_text}
+    </SOURCE_TEXT>
+    
+    To reiterate, only part of the text is being translated, shown here again between <TRANSLATE_THIS> and </TRANSLATE_THIS>:
+    <TRANSLATE_THIS>
+    {chunk_to_translate}
+    </TRANSLATE_THIS>
+    
+    The translation of the indicated part, delimited below by <TRANSLATION> and </TRANSLATION>, is as follows:
+    <TRANSLATION>
+    {init_agent_result}
+    </TRANSLATION>
+    
+     The expert translations of the indicated part, delimited below by <EXPERT_SUGGESTIONS> and </EXPERT_SUGGESTIONS>, is as follows:
+    <EXPERT_SUGGESTIONS>
+    {reflection_agent_result}
+    </EXPERT_SUGGESTIONS>
+    
+    Taking into account the expert suggestions rewrite the translation to improve it, paying attention
+    to whether there are ways to improve the translation's
+    
+    (i) accuracy (by correcting errors of addition, mistranslation, omission, or untranslated text),
+    (ii) fluency (by applying {target_lang} grammar, spelling and punctuation rules and ensuring there are no unnecessary repetitions), \
+    (iii) style (by ensuring the translations reflect the style of the source text)
+    (iv) terminology (inappropriate for context, inconsistent use), or
+    (v) other errors.
+    
+    Output only the new translation of the indicated part and nothing else.
+metadata:
+  type: 'PROMPT'
+  version: 'multi_translation_improve.en'
diff --git a/sample_standard_app/app/core/prompt/translation/multi_translation_init_en.yaml b/sample_standard_app/app/core/prompt/translation/multi_translation_init_en.yaml
new file mode 100644
index 00000000..f1ffdf3d
--- /dev/null
+++ b/sample_standard_app/app/core/prompt/translation/multi_translation_init_en.yaml
@@ -0,0 +1,22 @@
+introduction: 'You are an expert linguist, specializing in translation from {source_lang} to {target_lang}.'
+target: '  '
+instruction: |
+    Your task is provide a professional translation from {source_lang} to {target_lang} of PART of a text.
+    
+    The source text is below, delimited by XML tags <SOURCE_TEXT> and </SOURCE_TEXT>. Translate only the part within the source text
+    delimited by <TRANSLATE_THIS> and </TRANSLATE_THIS>. You can use the rest of the source text as context, but do not translate any
+    of the other text. Do not output anything other than the translation of the indicated part of the text.
+    
+    <SOURCE_TEXT>
+    {tagged_text}
+    </SOURCE_TEXT>
+    
+    To reiterate, you should translate only this part of the text, shown here again between <TRANSLATE_THIS> and </TRANSLATE_THIS>:
+    <TRANSLATE_THIS>
+    {chunk_to_translate}
+    </TRANSLATE_THIS>
+    
+    Output only the translation of the portion you are asked to translate, and nothing else.
+metadata:
+  type: 'PROMPT'
+  version: 'multi_translation_init.en'
diff --git a/sample_standard_app/app/core/prompt/translation/multi_translation_reflection_en.yaml b/sample_standard_app/app/core/prompt/translation/multi_translation_reflection_en.yaml
new file mode 100644
index 00000000..0a3e9b95
--- /dev/null
+++ b/sample_standard_app/app/core/prompt/translation/multi_translation_reflection_en.yaml
@@ -0,0 +1,36 @@
+introduction: You are an expert linguist specializing in translation from {source_lang} to {target_lang}.
+target: You will be provided with a source text and its translation and your goal is to improve the translation.
+instruction: |
+    Your task is to carefully read a source text and part of a translation of that text from {source_lang} to {target_lang}, and then give constructive criticism and helpful suggestions for improving the translation.
+    
+    The source text is below, delimited by XML tags <SOURCE_TEXT> and </SOURCE_TEXT>, and the part that has been translated
+    is delimited by <TRANSLATE_THIS> and </TRANSLATE_THIS> within the source text. You can use the rest of the source text
+    as context for critiquing the translated part.
+    
+    <SOURCE_TEXT>
+    {tagged_text}
+    </SOURCE_TEXT>
+    
+    To reiterate, only part of the text is being translated, shown here again between <TRANSLATE_THIS> and </TRANSLATE_THIS>:
+    <TRANSLATE_THIS>
+    {chunk_to_translate}
+    </TRANSLATE_THIS>
+    
+    The translation of the indicated part, delimited below by <TRANSLATION> and </TRANSLATION>, is as follows:
+    <TRANSLATION>
+    {init_agent_result}
+    </TRANSLATION>
+    
+    When writing suggestions, pay attention to whether there are ways to improve the translation's:\n\
+    (i) accuracy (by correcting errors of addition, mistranslation, omission, or untranslated text),\n\
+    (ii) fluency (by applying {target_lang} grammar, spelling and punctuation rules, and ensuring there are no unnecessary repetitions),\n\
+    (iii) style (by ensuring the translations reflect the style of the source text and takes into account any cultural context),\n\
+    (iv) terminology (by ensuring terminology use is consistent and reflects the source text domain; and by only ensuring you use equivalent idioms {target_lang}).\n\
+    
+    Write a list of specific, helpful and constructive suggestions for improving the translation.
+    Each suggestion should address one specific part of the translation.
+    Output only the suggestions and nothing else.
+
+metadata:
+  type: 'PROMPT'
+  version: 'multi_translation_reflection.en'
diff --git a/sample_standard_app/app/core/prompt/translation/translation_improve_en.yaml b/sample_standard_app/app/core/prompt/translation/translation_improve_en.yaml
new file mode 100644
index 00000000..5480d5e8
--- /dev/null
+++ b/sample_standard_app/app/core/prompt/translation/translation_improve_en.yaml
@@ -0,0 +1,33 @@
+introduction: You are an expert linguist specializing in translation from {source_lang} to {target_lang}.
+target: '  '
+instruction: |
+    Your task is to carefully read, then edit, a translation from {source_lang} to {target_lang}, taking into
+    account a list of expert suggestions and constructive criticisms.
+  
+    The source text, the initial translation, and the expert linguist suggestions are delimited by XML tags <SOURCE_TEXT></SOURCE_TEXT>, <TRANSLATION></TRANSLATION> and <EXPERT_SUGGESTIONS></EXPERT_SUGGESTIONS> \
+    as follows:
+  
+    <SOURCE_TEXT>
+    {source_text}
+    </SOURCE_TEXT>
+  
+    <TRANSLATION>
+    {init_agent_result}
+    </TRANSLATION>
+  
+    <EXPERT_SUGGESTIONS>
+    {reflection_agent_result}
+    </EXPERT_SUGGESTIONS>
+    
+    Please take into account the expert suggestions when editing the translation. Edit the translation by ensuring:
+    
+    (i) accuracy (by correcting errors of addition, mistranslation, omission, or untranslated text),
+    (ii) fluency (by applying {target_lang} grammar, spelling and punctuation rules and ensuring there are no unnecessary repetitions),
+    (iii) style (by ensuring the translations reflect the style of the source text)
+      (iv) terminology (inappropriate for context, inconsistent use), or
+    (v) other errors.
+  
+    Output only the new translation and nothing else.
+metadata:
+  type: 'PROMPT'
+  version: 'translation_improve.en'
diff --git a/sample_standard_app/app/core/prompt/translation/translation_init_en.yaml b/sample_standard_app/app/core/prompt/translation/translation_init_en.yaml
new file mode 100644
index 00000000..e94cb39f
--- /dev/null
+++ b/sample_standard_app/app/core/prompt/translation/translation_init_en.yaml
@@ -0,0 +1,12 @@
+introduction: You are an expert linguist, specializing in translation from {source_lang} to {target_lang}.
+target: '  '
+instruction: |
+      This is an {source_lang} to {target_lang} translation, please provide the {target_lang} translation for this text. 
+      Do not provide any explanations or text apart from the translation.
+      {source_lang}: {source_text}
+    
+      {target_lang}:
+
+metadata:
+  type: 'PROMPT'
+  version: 'translation_init.en'
diff --git a/sample_standard_app/app/core/prompt/translation/translation_reflection_en.yaml b/sample_standard_app/app/core/prompt/translation/translation_reflection_en.yaml
new file mode 100644
index 00000000..efd887d7
--- /dev/null
+++ b/sample_standard_app/app/core/prompt/translation/translation_reflection_en.yaml
@@ -0,0 +1,28 @@
+introduction: You are an expert linguist specializing in translation from {source_lang} to {target_lang}.
+target: You will be provided with a source text and its translation and your goal is to improve the translation.
+instruction: |
+    Your task is to carefully read a source text and a translation from {source_lang} to {target_lang}, and then give constructive criticism and helpful suggestions to improve the translation. 
+  
+    The source text and initial translation, delimited by XML tags <SOURCE_TEXT></SOURCE_TEXT> and <TRANSLATION></TRANSLATION>, are as follows:
+  
+    <SOURCE_TEXT>
+    {source_text}
+    </SOURCE_TEXT>
+  
+    <TRANSLATION>
+    {init_agent_result}
+    </TRANSLATION>
+  
+    When writing suggestions, pay attention to whether there are ways to improve the translation's 
+    (i) accuracy (by correcting errors of addition, mistranslation, omission, or untranslated text),
+    (ii) fluency (by applying {target_lang} grammar, spelling and punctuation rules, and ensuring there are no unnecessary repetitions),
+    (iii) style (by ensuring the translations reflect the style of the source text and takes into account any cultural context),
+    (iv) terminology (by ensuring terminology use is consistent and reflects the source text domain; and by only ensuring you use equivalent idioms {target_lang}).
+  
+    Write a list of specific, helpful and constructive suggestions for improving the translation.
+    Each suggestion should address one specific part of the translation.
+    Output only the suggestions and nothing else.
+
+metadata:
+  type: 'PROMPT'
+  version: 'translation_reflection.en'
diff --git a/sample_standard_app/app/core/service/translation_service.yaml b/sample_standard_app/app/core/service/translation_service.yaml
new file mode 100644
index 00000000..f76fe231
--- /dev/null
+++ b/sample_standard_app/app/core/service/translation_service.yaml
@@ -0,0 +1,5 @@
+name: 'translation_service'
+description: '吴恩达教授翻译智能体'
+agent: 'translation_by_token_agent'
+metadata:
+  type: 'SERVICE'
\ No newline at end of file
diff --git a/sample_standard_app/app/core/tool/langchain_tool/__init__.py b/sample_standard_app/app/core/tool/langchain_tool/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/sample_standard_app/app/core/tool/langchain_tool/duckduckgo_search.yaml b/sample_standard_app/app/core/tool/langchain_tool/duckduckgo_search.yaml
new file mode 100644
index 00000000..9bbb2977
--- /dev/null
+++ b/sample_standard_app/app/core/tool/langchain_tool/duckduckgo_search.yaml
@@ -0,0 +1,13 @@
+name: 'duckduckgo_search'
+description: ''
+tool_type: 'api'
+input_keys: ['input']
+langchain:
+  module: langchain.tools
+  class_name: DuckDuckGoSearchResults
+  init_params:
+    backend: news
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.langchain_tool.langchain_tool'
+  class: 'LangChainTool'
\ No newline at end of file
diff --git a/sample_standard_app/app/core/tool/langchain_tool/human_input_run.yaml b/sample_standard_app/app/core/tool/langchain_tool/human_input_run.yaml
new file mode 100644
index 00000000..405b6ea8
--- /dev/null
+++ b/sample_standard_app/app/core/tool/langchain_tool/human_input_run.yaml
@@ -0,0 +1,11 @@
+name: 'human_input_run'
+description: ''
+tool_type: 'api'
+input_keys: ['input']
+langchain:
+  module: langchain_community.tools
+  class_name: HumanInputRun
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.langchain_tool.langchain_tool'
+  class: 'LangChainTool'
\ No newline at end of file
diff --git a/sample_standard_app/app/core/tool/langchain_tool/info_sql_database_tool.yaml b/sample_standard_app/app/core/tool/langchain_tool/info_sql_database_tool.yaml
new file mode 100644
index 00000000..7ceba6e2
--- /dev/null
+++ b/sample_standard_app/app/core/tool/langchain_tool/info_sql_database_tool.yaml
@@ -0,0 +1,13 @@
+name: 'info_sql_database_tool'
+description: ''
+tool_type: 'api'
+input_keys: ['input']
+langchain:
+  module: langchain_community.tools
+  class_name: InfoSQLDatabaseTool
+  init_params:
+    db_wrapper: demo_sqldb_wrapper
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.langchain_tool.sql_langchain_tool'
+  class: 'SqlLangchainTool'
\ No newline at end of file
diff --git a/sample_standard_app/app/core/tool/langchain_tool/langchain_tool.py b/sample_standard_app/app/core/tool/langchain_tool/langchain_tool.py
new file mode 100644
index 00000000..91ad7f41
--- /dev/null
+++ b/sample_standard_app/app/core/tool/langchain_tool/langchain_tool.py
@@ -0,0 +1,50 @@
+# !/usr/bin/env python3
+# -*- coding:utf-8 -*-
+import importlib
+import json
+# @Time    : 2024/6/24 11:42
+# @Author  : weizjajj 
+# @Email   : weizhongjie.wzj@antgroup.com
+# @FileName: langchain_tool.py
+
+from typing import Optional, Type
+
+from langchain_community.tools import DuckDuckGoSearchResults
+from langchain_core.tools import BaseTool
+
+from agentuniverse.agent.action.tool.tool import Tool, ToolInput
+from agentuniverse.base.config.component_configer.configers.tool_configer import ToolConfiger
+
+
+class LangChainTool(Tool):
+    name: Optional[str] = ""
+    description: Optional[str] = ""
+    tool: Optional[BaseTool] = None
+
+    def execute(self, tool_input: ToolInput):
+        input = tool_input.get_data("input")
+        callbacks = tool_input.get_data("callbacks", None)
+        return self.tool.run(input, callbacks=callbacks)
+
+    def initialize_by_component_configer(self, component_configer: ToolConfiger) -> 'Tool':
+        super().initialize_by_component_configer(component_configer)
+        self.tool = self.init_langchain_tool(component_configer)
+        if not component_configer.description and self.tool is not None:
+            self.description = self.tool.description
+        return self
+
+    def init_langchain_tool(self, component_configer):
+        langchain_info = component_configer.configer.value.get('langchain')
+        module = langchain_info.get("module")
+        class_name = langchain_info.get("class_name")
+        module = importlib.import_module(module)
+        clz = getattr(module, class_name)
+        init_params = langchain_info.get("init_params")
+        self.get_langchain_tool(init_params, clz)
+        return self.tool
+
+    def get_langchain_tool(self, init_params: dict, clz: Type[BaseTool]):
+        if init_params:
+            self.tool = clz(**init_params)
+        else:
+            self.tool = clz()
diff --git a/sample_standard_app/app/core/tool/langchain_tool/list_sql_database_tool.yaml b/sample_standard_app/app/core/tool/langchain_tool/list_sql_database_tool.yaml
new file mode 100644
index 00000000..e2852d0b
--- /dev/null
+++ b/sample_standard_app/app/core/tool/langchain_tool/list_sql_database_tool.yaml
@@ -0,0 +1,13 @@
+name: 'list_sql_database_tool'
+description: ''
+tool_type: 'api'
+input_keys: ['input']
+langchain:
+  module: langchain_community.tools
+  class_name: ListSQLDatabaseTool
+  init_params:
+    db_wrapper: demo_sqldb_wrapper
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.langchain_tool.sql_langchain_tool'
+  class: 'SqlLangchainTool'
\ No newline at end of file
diff --git a/sample_standard_app/app/core/tool/langchain_tool/query_sql_database_tool.yaml b/sample_standard_app/app/core/tool/langchain_tool/query_sql_database_tool.yaml
new file mode 100644
index 00000000..e2f739a7
--- /dev/null
+++ b/sample_standard_app/app/core/tool/langchain_tool/query_sql_database_tool.yaml
@@ -0,0 +1,13 @@
+name: 'query_sql_database_tool'
+description: ''
+tool_type: 'api'
+input_keys: ['input']
+langchain:
+  module: langchain_community.tools
+  class_name: QuerySQLDataBaseTool
+  init_params:
+    db_wrapper: demo_sqldb_wrapper
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.langchain_tool.sql_langchain_tool'
+  class: 'SqlLangchainTool'
\ No newline at end of file
diff --git a/sample_standard_app/app/core/tool/langchain_tool/sql_langchain_tool.py b/sample_standard_app/app/core/tool/langchain_tool/sql_langchain_tool.py
new file mode 100644
index 00000000..502e44ce
--- /dev/null
+++ b/sample_standard_app/app/core/tool/langchain_tool/sql_langchain_tool.py
@@ -0,0 +1,39 @@
+# !/usr/bin/env python3
+# -*- coding:utf-8 -*-
+
+# @Time    : 2024/7/9 20:04
+# @Author  : weizjajj 
+# @Email   : weizhongjie.wzj@antgroup.com
+# @FileName: sql_langchain_tool.py
+
+from typing import Type, Optional
+
+from langchain_core.tools import BaseTool, Tool as LangchainTool
+
+from agentuniverse.agent.action.tool.tool import ToolInput
+from agentuniverse.database.sqldb_wrapper_manager import SQLDBWrapperManager
+from sample_standard_app.app.core.tool.langchain_tool.langchain_tool import LangChainTool
+
+
+class SqlLangchainTool(LangChainTool):
+    db_wrapper_name: Optional[str] = ""
+    clz: Type[BaseTool] = BaseTool
+
+    def execute(self, tool_input: ToolInput):
+        if self.tool is None:
+            self.get_sql_database()
+        return super().execute(tool_input)
+
+    def get_sql_database(self):
+        db_wrapper = SQLDBWrapperManager().get_instance_obj(self.db_wrapper_name)
+        self.tool = self.clz(db=db_wrapper.sql_database)
+        self.description = self.tool.description
+
+    def as_langchain(self) -> LangchainTool:
+        if self.tool is None:
+            self.get_sql_database()
+        return super().as_langchain()
+
+    def get_langchain_tool(self, init_params: dict, clz: Type[BaseTool]):
+        self.db_wrapper_name = init_params.get("db_wrapper")
+        self.clz = clz
diff --git a/sample_standard_app/app/core/tool/langchain_tool/wikipedia_query.py b/sample_standard_app/app/core/tool/langchain_tool/wikipedia_query.py
new file mode 100644
index 00000000..6c4e65a9
--- /dev/null
+++ b/sample_standard_app/app/core/tool/langchain_tool/wikipedia_query.py
@@ -0,0 +1,19 @@
+# !/usr/bin/env python3
+# -*- coding:utf-8 -*-
+
+# @Time    : 2024/6/27 17:38
+# @Author  : weizjajj 
+# @Email   : weizhongjie.wzj@antgroup.com
+# @FileName: wikipedia_query.py
+
+
+from langchain_community.tools import WikipediaQueryRun
+from langchain_community.utilities import WikipediaAPIWrapper
+
+from sample_standard_app.app.core.tool.langchain_tool.langchain_tool import LangChainTool
+
+
+class WikipediaTool(LangChainTool):
+    def init_langchain_tool(self, component_configer):
+        wrapper = WikipediaAPIWrapper()
+        return WikipediaQueryRun(api_wrapper=wrapper)
diff --git a/sample_standard_app/app/core/tool/langchain_tool/wikipedia_query.yaml b/sample_standard_app/app/core/tool/langchain_tool/wikipedia_query.yaml
new file mode 100644
index 00000000..71fafe62
--- /dev/null
+++ b/sample_standard_app/app/core/tool/langchain_tool/wikipedia_query.yaml
@@ -0,0 +1,8 @@
+name: 'wikipedia_query'
+description: ''
+tool_type: 'api'
+input_keys: ['input']
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.langchain_tool.wikipedia_query'
+  class: 'WikipediaTool'
\ No newline at end of file
diff --git a/sample_standard_app/app/core/tool/request_get_tool.yaml b/sample_standard_app/app/core/tool/request_get_tool.yaml
new file mode 100644
index 00000000..97426045
--- /dev/null
+++ b/sample_standard_app/app/core/tool/request_get_tool.yaml
@@ -0,0 +1,16 @@
+name: 'requests_get'
+description: 'A portal to the internet. Use this when you need to get specific
+    content from a website. Input should be a  url (i.e. https://www.google.com).
+    The output will be the text response of the GET request.
+        ```'
+headers:
+  content-type: 'application/json'
+method: 'GET'
+json_parser: false
+response_content_type: json
+tool_type: 'api'
+input_keys: ['input']
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.request_tool'
+  class: 'RequestTool'
\ No newline at end of file
diff --git a/sample_standard_app/app/core/tool/request_post_tool.yaml b/sample_standard_app/app/core/tool/request_post_tool.yaml
new file mode 100644
index 00000000..6a5a8c8f
--- /dev/null
+++ b/sample_standard_app/app/core/tool/request_post_tool.yaml
@@ -0,0 +1,19 @@
+name: 'requests_post'
+description: 'Use this when you want to POST to a website.
+    Input should be a json string with two keys: "url" and "data".
+    The value of "url" should be a string, and the value of "data" should be a dictionary of 
+    key-value pairs you want to POST to the url.
+    Be careful to always use double quotes for strings in the json string
+    The output will be the text response of the POST request.
+        ```'
+headers:
+  content-type: 'application/json'
+method: 'POST'
+json_parser: true
+response_content_type: json
+tool_type: 'api'
+input_keys: ['input']
+metadata:
+  type: 'TOOL'
+  module: 'sample_standard_app.app.core.tool.request_tool'
+  class: 'RequestTool'
\ No newline at end of file
diff --git a/sample_standard_app/app/core/tool/request_tool.py b/sample_standard_app/app/core/tool/request_tool.py
new file mode 100644
index 00000000..e41e57ce
--- /dev/null
+++ b/sample_standard_app/app/core/tool/request_tool.py
@@ -0,0 +1,71 @@
+# !/usr/bin/env python3
+# -*- coding:utf-8 -*-
+
+# @Time    : 2024/6/24 10:19
+# @Author  : weizjajj 
+# @Email   : weizhongjie.wzj@antgroup.com
+# @FileName: request_tool.py
+
+
+from typing import Optional
+
+from langchain_community.utilities.requests import GenericRequestsWrapper
+from langchain_core.utils.json import parse_json_markdown
+
+from agentuniverse.agent.action.tool.tool import Tool, ToolInput
+from agentuniverse.base.config.component_configer.configers.tool_configer import ToolConfiger
+from agentuniverse.base.util.logging.logging_util import LOGGER
+
+
+class RequestTool(Tool):
+    method:Optional[str] = 'GET'
+    headers: Optional[dict]= {}
+    response_content_type:Optional[str] = 'text'
+    requests_wrapper: Optional[GenericRequestsWrapper] = None
+    json_parser: Optional[bool] = False
+
+    @staticmethod
+    def _clean_url(url: str) -> str:
+        """Strips quotes from the url."""
+        return url.strip("\"'")
+
+    def execute(self, tool_input: ToolInput):
+        input_params: str = tool_input.get_data('input')
+        if self.json_parser:
+            try:
+                parse_data = parse_json_markdown(input_params)
+                return self.execute_by_method(**parse_data)
+            except Exception as e:
+                LOGGER.error(f'execute request error input{input_params} error{e}')
+                return str(e)
+        else:
+            return self.execute_by_method(input_params)
+
+    def execute_by_method(self, url: str, data: dict = None, **kwargs):
+        url = self._clean_url(url)
+        if self.method == 'GET':
+            return self.requests_wrapper.get(url)
+        elif self.method == 'POST':
+            return self.requests_wrapper.post(url, data=data)
+        elif self.method == 'PUT':
+            return self.requests_wrapper.put(url, data=data)
+        elif self.method == 'DELETE':
+            return self.requests_wrapper.delete(url)
+        else:
+            raise ValueError(f"Unsupported method: {self.method}")
+
+    def initialize_by_component_configer(self, component_configer: ToolConfiger) -> 'Tool':
+        """
+        :param component_configer:
+        :return:
+        """
+        self.headers = component_configer.configer.value.get('headers')
+        self.method = component_configer.configer.value.get('method')
+        self.response_content_type = component_configer.configer.value.get('response_content_type')
+        if 'json_parser' in component_configer.configer.value:
+            self.json_parser = component_configer.configer.value.get('json_parser')
+        self.requests_wrapper = GenericRequestsWrapper(
+            headers=self.headers,
+            response_content_type=self.response_content_type
+        )
+        return super().initialize_by_component_configer(component_configer)
diff --git a/sample_standard_app/app/examples/data/dataset_turn_1_2024-07-10-10-48-30.jsonl b/sample_standard_app/app/examples/data/dataset_turn_1_2024-07-10-10-48-30.jsonl
new file mode 100644
index 00000000..21289684
--- /dev/null
+++ b/sample_standard_app/app/examples/data/dataset_turn_1_2024-07-10-10-48-30.jsonl
@@ -0,0 +1,3 @@
+{"query": "北京今天天气如何", "answer": "北京今天气温为86°F，属于高温天气，建议外出携带防晒用品，并注意补充水分。"}
+{"query": "半导体还能继续持有吗", "answer": "关于这个问题，目前很难给出明确的答案。一方面，中国半导体产业的发展仍然面临诸多挑战，例如美国的制裁、需求下降、行业波动等等。另一方面，随着人工智能、新能源车等新兴领域的需求增长，中国的半导体产业也有很大的发展空间。\n因此，建议投资者在考虑是否持有半导体相关股票时，不仅要关注当前的市场情况，也要考虑到长期的产业发展趋势。同时，也需要密切关注政策动态以及国内外市场的变化，以便做出更明智的投资决策。"}
+{"query": "帮我预测下2024欧洲杯冠军", "answer": "根据我的分析，以下是我对2024年欧洲杯冠军的预测：\n1. 西班牙：虽然他们的表现有所下滑，但西班牙仍然是一个强大的对手，他们有着丰富的国际比赛经验，而且他们的进攻线实力强大。\n2. 英格兰：虽然他们在最近几年的表现有些起伏不定，但他们拥有世界级的球员如哈里·凯恩和莱昂内尔·梅西，如果他们能够发挥出最佳状态，那么他们有可能赢得冠军。\n3. 法国：法国队在2018年的世界杯中赢得了冠军，这表明他们具有强大的实力。虽然姆巴佩和博格巴等球员可能会缺席比赛，但其他球员如基利安·姆巴佩和恩戈洛·坎特仍然有能力带领法国队走向胜利。\n总的来说，我认为这四支球队都有可能赢得2024年欧洲杯冠军，最终的结果取决于他们在比赛中的表现和运气。"}
diff --git a/sample_standard_app/app/examples/data/dataset_turn_1_2024-07-10-15-06-24.jsonl b/sample_standard_app/app/examples/data/dataset_turn_1_2024-07-10-15-06-24.jsonl
new file mode 100644
index 00000000..80c57ce9
--- /dev/null
+++ b/sample_standard_app/app/examples/data/dataset_turn_1_2024-07-10-15-06-24.jsonl
@@ -0,0 +1,3 @@
+{"query": "Can Tesla's stock still be bought?", "answer": "The decision to buy Tesla (TSLA) stock depends on various factors and individual investment strategies. Tesla's stock has experienced significant volatility in recent times, with a retreat of around 30% in 2024. However, there have been moments of recovery, such as a 27% gain in a single week that erased yearly losses.\n\nThe company's valuation is a crucial consideration. Despite the stock price decline, Tesla still commands a high price-to-earnings (P/E) ratio of 47, which indicates that investors are paying a premium for future growth potential. This valuation is relatively expensive compared to its historical levels or industry averages, suggesting that the market expects strong earnings growth from Tesla.\n\nIt's important to note that analyst expectations have been revised downward, leading to an increase in the forward price-earnings ratio. This means that the stock is priced based on reduced earnings forecasts. If the company fails to meet these lowered expectations, the stock price could be negatively impacted.\n\nElon Musk's $56 billion pay package, which shareholders are likely to approve, could also influence investor sentiment. Such a large compensation package might raise concerns about executive pay and its alignment with shareholder interests.\n\nAdditionally, there are bearish opinions in the market, with some analysts and hedge fund managers, like Per Lekander, expressing concerns about Tesla potentially facing financial difficulties or even bankruptcy, with the stock possibly plummeting to $14.\n\nIn conclusion, whether to buy Tesla stock depends on one's risk tolerance, investment horizon, and belief in the company's ability to execute its growth strategy and meet or exceed revised market expectations. It's advisable to conduct thorough research, consider expert opinions, and consult with a financial advisor before making any investment decisions."}
+{"query": "Help me predict the 2024 European Cup championship", "answer": "Predicting the outcome of a major football tournament like the UEFA Euro 2024 is always a challenging task, as it involves multiple factors such as team form, injuries, tactics, and match-ups. However, based on current trends and past performances, we can make some educated guesses.\n\nSpain has emerged as the favorite for the tournament, likely due to their strong recent form and talented squad. They have a history of success in the Euros, having won the title twice, in 2008 and 2012. Their possession-based style and skilled players make them a formidable opponent.\n\nEngland, another strong contender, is seeking their first-ever Euro title. They reached the final in 2020, losing to Italy, and have a talented generation of players with experience from that run. Their solid defense and attacking prowess make them a force to be reckoned with.\n\nFrance, despite not being the top favorite, is always a strong competitor, having won the tournament twice and the World Cup most recently in 2018. They boast a star-studded lineup and could go deep into the competition.\n\nThe Netherlands, often considered a dark horse, have a promising team with a mix of experienced players and young talents. They could potentially reach the quarter-finals or even the semis, but consistency might be a key factor in their success.\n\nOther teams to watch out for include Denmark, Croatia, Turkey, and Austria, each with their own strengths and potential to cause upsets.\n\nBased on these considerations, a potential semi-final lineup could resemble:\n\n- Spain vs France: Both teams have a rich history in the tournament and possess quality across the pitch. This would be an exciting clash of styles, with Spain's possession game against France's counter-attacking prowess.\n\n- Netherlands vs England: A repeat of classic encounters, this match could see two attacking-minded sides battling it out. England's defensive stability might give them the edge over the Dutch.\n\nOf course, these predictions are subject to change depending on how teams perform leading up to the tournament and during the group stages. In football, anything can happen, and upsets are part of what makes the competition so thrilling. The actual results may differ significantly from these predictions, but they provide a starting point for discussion and anticipation ahead of Euro 2024."}
+{"query": "What's the weather in New York today?", "answer": "I'm sorry, but as an AI, I don't have real-time data for current weather conditions. However, I can tell you that typically, to find out the current weather in New York, you can check reliable sources such as the National Weather Service (NWS), the Weather Channel, or visit websites like weather.gov. These resources provide up-to-date information on temperature, precipitation, wind, and any advisories or warnings in effect. It's always a good idea to check these before planning your day, especially if you're concerned about weather conditions like a heat advisory."}
\ No newline at end of file
diff --git a/sample_standard_app/app/examples/data/eval_report_2024-07-10-10-48-30.xlsx b/sample_standard_app/app/examples/data/eval_report_2024-07-10-10-48-30.xlsx
new file mode 100644
index 00000000..8bcd64e7
Binary files /dev/null and b/sample_standard_app/app/examples/data/eval_report_2024-07-10-10-48-30.xlsx differ
diff --git a/sample_standard_app/app/examples/data/eval_report_2024-07-10-15-06-24.xlsx b/sample_standard_app/app/examples/data/eval_report_2024-07-10-15-06-24.xlsx
new file mode 100644
index 00000000..c45bf5e5
Binary files /dev/null and b/sample_standard_app/app/examples/data/eval_report_2024-07-10-15-06-24.xlsx differ
diff --git a/sample_standard_app/app/examples/data/eval_result_turn_1_2024-07-10-10-48-30.xlsx b/sample_standard_app/app/examples/data/eval_result_turn_1_2024-07-10-10-48-30.xlsx
new file mode 100644
index 00000000..40e25c16
Binary files /dev/null and b/sample_standard_app/app/examples/data/eval_result_turn_1_2024-07-10-10-48-30.xlsx differ
diff --git a/sample_standard_app/app/examples/data/eval_result_turn_1_2024-07-10-15-06-24.xlsx b/sample_standard_app/app/examples/data/eval_result_turn_1_2024-07-10-15-06-24.xlsx
new file mode 100644
index 00000000..f5c047c8
Binary files /dev/null and b/sample_standard_app/app/examples/data/eval_result_turn_1_2024-07-10-15-06-24.xlsx differ
diff --git a/sample_standard_app/app/examples/data/queryset_cn.jsonl b/sample_standard_app/app/examples/data/queryset_cn.jsonl
new file mode 100644
index 00000000..d5215aa3
--- /dev/null
+++ b/sample_standard_app/app/examples/data/queryset_cn.jsonl
@@ -0,0 +1,3 @@
+{"input": "帮我预测下2024欧洲杯冠军"}
+{"input": "半导体还能继续持有吗"}
+{"input": "北京今天天气如何"}
\ No newline at end of file
diff --git a/sample_standard_app/app/examples/data/queryset_en.jsonl b/sample_standard_app/app/examples/data/queryset_en.jsonl
new file mode 100644
index 00000000..dfb39bc8
--- /dev/null
+++ b/sample_standard_app/app/examples/data/queryset_en.jsonl
@@ -0,0 +1,3 @@
+{"input": "Help me predict the 2024 European Cup championship"}
+{"input": "Can Tesla's stock still be bought?"}
+{"input": "What's the weather in New York today?"}
\ No newline at end of file
diff --git a/sample_standard_app/app/examples/data_agent.py b/sample_standard_app/app/examples/data_agent.py
new file mode 100644
index 00000000..a3a52c7e
--- /dev/null
+++ b/sample_standard_app/app/examples/data_agent.py
@@ -0,0 +1,23 @@
+# !/usr/bin/env python3
+# -*- coding:utf-8 -*-
+
+# @Time    : 2024/7/2 16:58
+# @Author  : wangchongshi
+# @Email   : wangchongshi.wcs@antgroup.com
+# @FileName: data_agent.py
+from agentuniverse.base.agentuniverse import AgentUniverse
+from agentuniverse.agent.agent import Agent
+from agentuniverse.agent.agent_manager import AgentManager
+
+AgentUniverse().start(config_path='../../config/config.toml')
+
+
+def data_process(queryset_path: str, turn: int, **kwargs):
+    instance: Agent = AgentManager().get_instance_obj('data_agent')
+    instance.run(queryset_path=queryset_path, turn=turn, **kwargs)
+
+
+if __name__ == '__main__':
+    queryset_path_list = ["./data/queryset_cn.jsonl"]
+    for path in queryset_path_list:
+        data_process(queryset_path=path, turn=2)
diff --git a/sample_standard_app/app/util/__init__.py b/sample_standard_app/app/util/__init__.py
new file mode 100644
index 00000000..a5be5aa6
--- /dev/null
+++ b/sample_standard_app/app/util/__init__.py
@@ -0,0 +1,7 @@
+# !/usr/bin/env python3
+# -*- coding:utf-8 -*-
+
+# @Time    : 2024/7/1 16:05
+# @Author  : wangchongshi
+# @Email   : wangchongshi.wcs@antgroup.com
+# @FileName: __init__.py.py
diff --git a/sample_standard_app/app/util/jsonl_file_utils.py b/sample_standard_app/app/util/jsonl_file_utils.py
new file mode 100644
index 00000000..fd089c85
--- /dev/null
+++ b/sample_standard_app/app/util/jsonl_file_utils.py
@@ -0,0 +1,91 @@
+# !/usr/bin/env python3
+# -*- coding:utf-8 -*-
+
+# @Time    : 2024/7/1 21:09
+# @Author  : wangchongshi
+# @Email   : wangchongshi.wcs@antgroup.com
+# @FileName: jsonl_file_utils.py
+import json
+import os
+import sys
+
+from agentuniverse.base.util.logging.logging_util import LOGGER
+
+DATA_DIR = './data/'
+
+sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
+
+
+class JsonFileOps(object):
+    def __init__(self):
+        return
+
+    @classmethod
+    def is_file_exist(cls, file_path):
+        file_name, ext = os.path.splitext(file_path)
+        if ext.lower() != '.jsonl':
+            raise Exception('Unsupported file extension')
+        return os.path.exists(file_path)
+
+
+class JsonFileReader(object):
+    def __init__(self, file_path: str):
+        self.file_handler = None
+        self.file_name = file_path
+        if JsonFileOps.is_file_exist(file_path):
+            self.file_handler = open(file_path, 'r', encoding='utf-8')
+
+    def read_json_obj(self):
+        if not self.file_handler:
+            raise Exception(f"None json file to read: {self.file_name}")
+        json_line = self.file_handler.readline()
+        if json_line:
+            try:
+                json_obj = json.loads(json_line.strip())
+                return json_obj
+            except Exception as e:
+                LOGGER.warn(f"except[read_json_line]>>>{e}:{json_line}")
+                return json.loads('{}')
+        else:
+            return None
+
+    def read_json_obj_list(self):
+        obj_list = []
+        while True:
+            obj = self.read_json_obj()
+            if obj is None:
+                break
+            obj_list.append(obj)
+        return obj_list
+
+
+class JsonFileWriter(object):
+    def __init__(self, output_file_name: str, extension='jsonl', directory=DATA_DIR):
+        self.outfile_path = directory + output_file_name + '.' + extension
+        directory = os.path.dirname(self.outfile_path)
+        if not os.path.exists(directory):
+            os.makedirs(directory)
+        self.outfile_handler = open(self.outfile_path, 'w', encoding='utf-8')
+
+    def write_json_obj(self, json_obj: dict):
+        try:
+            # confirm that it's a json string and then write.
+            json_line = json.dumps(json_obj, ensure_ascii=False)
+            self.outfile_handler.write(json_line.strip() + '\n')
+            self.outfile_handler.flush()
+        except Exception as e:
+            LOGGER.warn(f"except[write_json_obj]>>>{e}:{json_obj}")
+        return
+
+    def write_json_obj_list(self, json_obj_list: list):
+        for i in range(0, len(json_obj_list)):
+            self.write_json_obj(json_obj_list[i])
+        return
+
+    def write_json_query_answer(self, query: str, answer: str):
+        json_obj = {"query": query, "answer": answer}
+        self.write_json_obj(json_obj)
+
+    def write_json_query_answer_list(self, query_answer_list: list):
+        for i in range(0, len(query_answer_list)):
+            self.write_json_query_answer(query_answer_list[i][0], query_answer_list[i][1])
diff --git a/sample_standard_app/app/util/txt_file_utils.py b/sample_standard_app/app/util/txt_file_utils.py
new file mode 100644
index 00000000..bd8f1ec1
--- /dev/null
+++ b/sample_standard_app/app/util/txt_file_utils.py
@@ -0,0 +1,50 @@
+# !/usr/bin/env python3
+# -*- coding:utf-8 -*-
+
+# @Time    : 2024/7/1 16:05
+# @Author  : wangchongshi
+# @Email   : wangchongshi.wcs@antgroup.com
+# @FileName: txt_file_utils.py
+import os
+import sys
+
+sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
+
+
+class TxtFileOps(object):
+    def __init__(self):
+        return
+
+    @classmethod
+    def is_file_exist(cls, file_path):
+        file_name, ext = os.path.splitext(file_path)
+        if ext.lower() != '.txt':
+            raise Exception('Unsupported file extension')
+        return os.path.exists(file_path)
+
+
+class TxtFileReader(object):
+
+    def __init__(self, file_path: str):
+        self.file_handler = None
+        self.file_name = file_path
+        if TxtFileOps.is_file_exist(file_path):
+            self.file_handler = open(file_path, 'r', encoding='utf-8')
+
+    def read_txt_obj(self):
+        if not self.file_handler:
+            raise Exception(f"No txt file to read: {self.file_name}")
+        txt_line = self.file_handler.readline()
+        if txt_line:
+            return txt_line.strip()
+        else:
+            return None
+
+    def read_txt_obj_list(self):
+        obj_list = []
+        while True:
+            obj = self.read_txt_obj()
+            if obj is None:
+                break
+            obj_list.append(obj)
+        return obj_list
diff --git a/sample_standard_app/config/custom_key.toml.sample b/sample_standard_app/config/custom_key.toml.sample
index ccde297e..f0bdf78c 100644
--- a/sample_standard_app/config/custom_key.toml.sample
+++ b/sample_standard_app/config/custom_key.toml.sample
@@ -1,4 +1,43 @@
 # Example file of custom_key.toml. Rename to custom_key.toml while using.
 [KEY_LIST]
 # Perform a full component scan and registration for all the paths under this list.
-example_key = 'AnExampleKey'
\ No newline at end of file
+example_key = 'AnExampleKey'
+
+# models
+#kimi default name: default_kimi_llm
+#KIMI_API_KEY='sk-xxxxxxxx'
+#
+##Qwen default name: default_qwen_llm
+#DASHSCOPE_API_KEY='sk-xxxxxx'
+#
+##Opean default name: default_openai_llm
+#OPENAI_API_KEY='sk-xxxxxx'
+#
+##DEEPSEEK default name: default_deepseek_llm
+#DEEPSEEK_API_KEY='sk-xxxxxxx'
+#DEEPSEEK_API_BASE='https://api.deepseek.com/v1'
+#
+## WenXin default name: default_wenxin_llm
+#QIANFAN_AK='xxxx'
+#QIANFAN_SK='xxxx'
+#
+##Ollama default name: default_ollama_llm
+#OLLAMA_BASE_URL='xxxxxx'
+#
+##claude default name: default_claude_llm
+#ANTHROPIC_API_KEY='xxxxxx'
+#ANTHROPIC_API_URL='xxxxxx'
+#
+##baichuan default name: default_baichuan_llm
+#BAICHUAN_API_KEY='xxxxxx'
+
+
+# search
+#Google search
+#SERPER_API_KEY='xxxxxx'
+#
+##search api
+#SEARCHAPI_API_KEY='xxxxxx'
+#
+##bing seacrh
+#BING_SUBSCRIPTION_KEY='xxxxxx'
\ No newline at end of file
diff --git a/sample_standard_app/pyproject.toml b/sample_standard_app/pyproject.toml
index 7b763d8d..eab8e02b 100644
--- a/sample_standard_app/pyproject.toml
+++ b/sample_standard_app/pyproject.toml
@@ -11,7 +11,7 @@ packages = [
 
 [tool.poetry.dependencies]
 python = "^3.10"
-agentUniverse = "^0.0.5"
+agentUniverse = "^0.0.9"
 
 [tool.poetry.group.dev.dependencies]
 pytest = "^7.2.0"


Test patch:
diff --git a/sample_standard_app/app/test/test_data_agent.py b/sample_standard_app/app/test/test_data_agent.py
new file mode 100644
index 00000000..a19df2e8
--- /dev/null
+++ b/sample_standard_app/app/test/test_data_agent.py
@@ -0,0 +1,27 @@
+# !/usr/bin/env python3
+# -*- coding:utf-8 -*-
+
+# @Time    : 2024/7/1 16:48
+# @Author  : wangchongshi
+# @Email   : wangchongshi.wcs@antgroup.com
+# @FileName: test_data_agent.py
+import unittest
+
+from agentuniverse.agent.agent import Agent
+from agentuniverse.agent.agent_manager import AgentManager
+from agentuniverse.base.agentuniverse import AgentUniverse
+
+
+class DataAgentTest(unittest.TestCase):
+    """Test cases for the data agent"""
+
+    def setUp(self) -> None:
+        AgentUniverse().start(config_path='../../config/config.toml')
+
+    def test_data_agent(self):
+        instance: Agent = AgentManager().get_instance_obj('data_agent')
+        instance.run(queryset_path='', turn=2)
+
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/sample_standard_app/app/test/test_deep_seek_llm.py b/sample_standard_app/app/test/test_deep_seek_llm.py
new file mode 100644
index 00000000..8afb55c8
--- /dev/null
+++ b/sample_standard_app/app/test/test_deep_seek_llm.py
@@ -0,0 +1,56 @@
+# !/usr/bin/env python3
+# -*- coding:utf-8 -*-
+
+# @Time    : 2024/5/22 16:25
+# @Author  : weizjajj 
+# @Email   : weizhongjie.wzj@antgroup.com
+# @FileName: test_wenxin_llm.py
+
+
+import asyncio
+import time
+import unittest
+
+from agentuniverse.base.agentuniverse import AgentUniverse
+from agentuniverse.llm.default.wenxin_llm import WenXinLLM
+from agentuniverse.llm.llm_manager import LLMManager
+
+
+class DeepSeekLLMTest(unittest.TestCase):
+    """Test cases for the reviewing agent"""
+
+    def setUp(self) -> None:
+        AgentUniverse().start(config_path='../../config/config.toml')
+
+    def test_reviewing_agent(self):
+        llm: WenXinLLM = LLMManager().get_instance_obj("deep_seek_llm")
+        res = llm.call(
+            messages=[{"role": "user", "content": "你好"}],
+            streaming=True
+        )
+        print(res)
+        for item in res:
+            print(item)
+
+        langchain_llm = llm.as_langchain()
+        print(langchain_llm.invoke(input="你好"))
+        time.sleep(1)
+        asyncio.run(self.call_stream())
+
+    async def call_stream(self):
+        llm: WenXinLLM = LLMManager().get_instance_obj("deep_seek_llm")
+        res = await llm.acall(
+            messages=[{"role": "user", "content": "你好"}],
+            streaming=True
+        )
+        print(res)
+        async for item in res:
+            print(item)
+
+        langchain_llm = llm.as_langchain()
+        res = await langchain_llm.ainvoke(input="你好")
+        print(res)
+
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/sample_standard_app/app/test/test_translation_agent.py b/sample_standard_app/app/test/test_translation_agent.py
new file mode 100644
index 00000000..afb82440
--- /dev/null
+++ b/sample_standard_app/app/test/test_translation_agent.py
@@ -0,0 +1,56 @@
+# !/usr/bin/env python3
+# -*- coding:utf-8 -*-
+
+# @Time    : 2024/4/1 14:32
+# @Author  : wangchongshi
+# @Email   : wangchongshi.wcs@antgroup.com
+# @FileName: test_rag_agent.py
+import unittest
+
+from agentuniverse.agent.agent import Agent
+from agentuniverse.agent.agent_manager import AgentManager
+from agentuniverse.agent.output_object import OutputObject
+from agentuniverse.base.agentuniverse import AgentUniverse
+
+
+class TranslationAgentTest(unittest.TestCase):
+    """
+    Test cases for the rag agent
+    """
+
+    def setUp(self) -> None:
+        AgentUniverse().start(config_path='../../config/config.toml')
+
+    def test_translation_agent_long(self):
+        instance: Agent = AgentManager().get_instance_obj('translation_by_token_agent')
+        with open('./translation_data/long_text.txt', 'r') as f:
+            data = f.read()
+
+        output_object: OutputObject = instance.run(source_lang="英文", target_lang="中文",
+                                                   source_text=data
+                                                   )
+        res_info = f"\nRag agent execution result is :\n"
+        res_info += output_object.get_data('output')
+        # 创建文件，并写入文件
+        with open('./translation_data/long_text_result.txt', 'w') as f:
+            f.write(res_info)
+        print(res_info)
+
+    # def test_translation_agent_short(self):
+    #     instance: Agent = AgentManager().get_instance_obj('translation_by_token_agent')
+    #     with open('./translation_data/short_text.txt', 'r') as f:
+    #         data = f.read()
+    #
+    #     output_object: OutputObject = instance.run(source_lang="英文", target_lang="中文",
+    #                                                source_text=data
+    #                                                )
+    #     res_info = f"\nRag agent execution result is :\n"
+    #     res_info += output_object.get_data('output')
+    #     # 创建文件，并写入文件
+    #     with open('./translation_data/short_text_result.txt', 'w') as f:
+    #         f.write(res_info)
+    #     print(res_info)
+
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/sample_standard_app/app/test/translation_data/long_text.txt b/sample_standard_app/app/test/translation_data/long_text.txt
new file mode 100644
index 00000000..3b791662
--- /dev/null
+++ b/sample_standard_app/app/test/translation_data/long_text.txt
@@ -0,0 +1,16 @@
+Last week, I spoke about AI and regulation at the U.S. Capitol at an event that was attended by legislative and business leaders. I’m encouraged by the progress the open source community has made fending off regulations that would have stifled innovation. But opponents of open source are continuing to shift their arguments, with the latest worries centering on open source's impact on national security. I hope we’ll all keep protecting open source!
+
+Based on my conversations with legislators, I’m encouraged by the progress the U.S. federal government has made getting a realistic grasp of AI’s risks. To be clear, guardrails are needed. But they should be applied to AI applications, not to general-purpose AI technology.
+
+Nonetheless, as I wrote previously, some companies are eager to limit open source, possibly to protect the value of massive investments they’ve made in proprietary models and to deter competitors. It has been fascinating to watch their arguments change over time.
+
+For instance, about 12 months ago, the Center For AI Safety’s “Statement on AI Risk” warned that AI could cause human extinction and stoked fears of AI taking over. This alarmed leaders in Washington. But many people in AI pointed out that this dystopian science-fiction scenario has little basis in reality. About six months later, when I testified at the U.S. Senate’s AI Insight forum, legislators no longer worried much about an AI takeover.
+
+Then the opponents of open source shifted gears. Their leading argument shifted to the risk of AI helping to create bioweapons. Soon afterward, OpenAI and RAND showed that current AI does not significantly increase the ability of malefactors to build bioweapons. This fear of AI-enabled bioweapons has diminished. To be sure, the possibility that bad actors could use bioweapons — with or without AI — remains a topic of great international concern.
+
+
+The latest argument for blocking open source AI has shifted to national security. AI is useful for both economic competition and warfare, and open source opponents say the U.S. should make sure its adversaries don’t have access to the latest foundation models. While I don’t want authoritarian governments to use AI, particularly to wage unjust wars, the LLM cat is out of the bag, and authoritarian countries will fill the vacuum if democratic nations limit access. When, some day, a child somewhere asks an AI system questions about democracy, the role of a free press, or the function of an independent judiciary in preserving the rule of law, I would like the AI to reflect democratic values rather than favor authoritarian leaders’ goals over, say, human rights.
+
+I came away from Washington optimistic about the progress we’ve made. A  year ago, legislators seemed to me to spend 80% of their time talking about guardrails for AI and 20% about investing in innovation. I was delighted that the ratio has flipped, and there was far more talk of investing in innovation.
+
+Looking beyond the U.S. federal government, there are many jurisdictions globally. Unfortunately, arguments in favor of  regulations that would stifle AI development continue to proliferate. But I’ve learned from my trips to Washington and other nations’ capitals that talking to regulators does have an impact. If you get a chance to talk to a regulator at any level, I hope you’ll do what you can to help governments better understand AI.
diff --git a/sample_standard_app/app/test/translation_data/long_text_result.txt b/sample_standard_app/app/test/translation_data/long_text_result.txt
new file mode 100644
index 00000000..6ac7eb61
--- /dev/null
+++ b/sample_standard_app/app/test/translation_data/long_text_result.txt
@@ -0,0 +1,9 @@
+
+Rag agent execution result is :
+上周，我在美国国会大厦就人工智能和监管问题发表了演讲，此次活动吸引了立法界和企业界的领袖。我对开源社区在抵御可能扼杀创新的监管方面取得的进展感到鼓舞。然而，开源的反对者仍在不断变换他们的论点，最新的担忧集中在开源对国家安全的影响上。我们应继续共同保护开源环境！
+
+根据我与立法者的对话，我对美国联邦政府在准确评估人工智能风险方面取得的进展感到鼓舞。明确地说，需要设置防护措施。但这些措施应针对人工智能的具体应用，而非通用人工智能技术本身。愿我们共同守护开源精神！尽管如此，正如我之前所写，一些公司急于限制开源，可能是为了保护他们在专有模型上所做的巨额投资价值，并阻止竞争对手。观察他们的论点随时间演变的过程一直颇具趣味。
+
+例如，大约12个月前，人工智能安全中心发布的《人工智能风险声明》警告说，人工智能可能导致人类灭绝，并引发了人们对人工智能主导的担忧。这引起了华盛顿领导人的警觉。但许多人工智能领域的专家指出，这种反乌托邦科幻情景在现实中缺乏依据。大约六个月后，当我在美国参议院的人工智能洞察论坛上作证时，立法者们对人工智能接管的担忧已显著减少。然后，开源的反对者们转变了策略。他们主要的论点转变为人工智能可能帮助制造生物武器的风险。不久之后，OpenAI和RAND表明，当前的人工智能并没有显著增加恶意行为者制造生物武器的能力。这种关于人工智能辅助生物武器的担忧已有所减少。可以肯定的是，不良行为者可能使用生物武器——无论是否借助人工智能——仍然是国际上高度关注的话题。最新反对开放源代码AI的论点已转向国家安全问题。AI在经济竞争和战争中都有其用途，反对者认为美国应确保其对手无法接触到最新的基础模型。虽然我不希望专制政府使用AI，尤其是用于发动不公正的战争，但大语言模型的秘密已经泄露，如果民主国家限制访问，专制国家将会填补这一空白。当某天，某个地方的孩子向AI系统提问关于民主、自由媒体的角色或独立司法在维护法治中的作用时，我希望AI能体现民主价值观，而不是优先服务于专制领导者的目标，比如牺牲人权。离开华盛顿后，我对我们取得的进展感到乐观。一年前，立法者似乎将80%的时间用于讨论AI的监管框架，而仅20%的时间用于讨论投资创新。我很高兴这一比例已经逆转，现在更多地聚焦于投资创新。
+
+除了美国联邦政府，全球还有许多法律辖区。不幸的是，支持那些可能阻碍AI发展的监管规定的论点仍在不断增加。但我从访问华盛顿和其他国家的首都的经历中学到，与监管机构的对话确实会产生影响。如果你有机会与任何级别的监管机构交流，我希望你能尽力协助政府更深入地理解AI。
\ No newline at end of file
diff --git a/sample_standard_app/app/test/translation_data/short_text.txt b/sample_standard_app/app/test/translation_data/short_text.txt
new file mode 100644
index 00000000..51f437cf
--- /dev/null
+++ b/sample_standard_app/app/test/translation_data/short_text.txt
@@ -0,0 +1,3 @@
+Last week, I spoke about AI and regulation at the U.S. Capitol at an event that was attended by legislative and business leaders. I’m encouraged by the progress the open source community has made fending off regulations that would have stifled innovation. But opponents of open source are continuing to shift their arguments, with the latest worries centering on open source's impact on national security. I hope we’ll all keep protecting open source!
+
+Based on my conversations with legislators, I’m encouraged by the progress the U.S. federal government has made getting a realistic grasp of AI’s risks. To be clear, guardrails are needed. But they should be applied to AI applications, not to general-purpose AI technology.
diff --git a/sample_standard_app/app/test/translation_data/short_text_result.txt b/sample_standard_app/app/test/translation_data/short_text_result.txt
new file mode 100644
index 00000000..461c099f
--- /dev/null
+++ b/sample_standard_app/app/test/translation_data/short_text_result.txt
@@ -0,0 +1,5 @@
+
+Rag agent execution result is :
+上周，我在美国国会大厦举行的一场专门讨论会上谈到了人工智能和监管，该会议吸引了立法和商界领袖的参与。我对开源社区在反对可能扼杀创新的法规方面取得的进展感到鼓舞。但反对开源的人士仍在不断调整他们的立场，最新的关注点集中在开源对国家安全的影响上。我希望我们都能继续保护开源！
+
+根据我与立法者的交谈，我对美国联邦政府在准确评估人工智能风险方面取得的进展感到鼓舞。需要明确的是，确实需要设立防护措施。但这些应该针对人工智能应用，而不是通用人工智能技术。
\ No newline at end of file