From 8306b4373b5849aad549461745922d95fa5e120b Mon Sep 17 00:00:00 2001
From: crazywoola <100913391+crazywoola@users.noreply.github.com>
Date: Wed, 15 Nov 2023 19:10:17 +0800
Subject: [PATCH] doc: update readme (#1536)
---
README.md | 6 ++++--
README_CN.md | 48 ++++++++++++++++++++---------------------
images/demo.png | Bin 0 -> 808888 bytes
images/describe-cn.jpg | Bin 1230401 -> 0 bytes
images/describe-en.png | Bin 1277834 -> 1328410 bytes
images/models.png | Bin 0 -> 81757 bytes
6 files changed, 27 insertions(+), 27 deletions(-)
create mode 100644 images/demo.png
delete mode 100644 images/describe-cn.jpg
create mode 100644 images/models.png
diff --git a/README.md b/README.md
index 6a1d515e2e..765deab345 100644
--- a/README.md
+++ b/README.md
@@ -8,9 +8,9 @@
#### [Website](https://dify.ai) • [Docs](https://docs.dify.ai) • [Deployment Docs](https://docs.dify.ai/getting-started/install-self-hosted) • [FAQ](https://docs.dify.ai/getting-started/faq) • [Twitter](https://twitter.com/dify_ai) • [Discord](https://discord.gg/FngNHpbcY7)
-**Dify** is an LLM application development platform that has already seen over 100,000 applications built on Dify.AI. It integrates the concepts of Backend as a Service and LLMOps, covering the core tech stack required for building generative AI-native applications, including a built-in RAG engine. With Dify, **you can self-deploy capabilities similar to Assistants API and GPTs based on any LLMs.**
+**Dify** is an LLM application development platform that has already seen over **100,000** applications built on Dify.AI. It integrates the concepts of Backend as a Service and LLMOps, covering the core tech stack required for building generative AI-native applications, including a built-in RAG engine. With Dify, **you can self-deploy capabilities similar to Assistants API and GPTs based on any LLMs.**
-https://github.com/langgenius/dify/assets/100913391/f6e658d5-31b3-4c16-a0af-9e191da4d0f6
+![](./images/demo.png)
## Use Cloud Services
@@ -31,6 +31,8 @@ Dify features model neutrality and is a complete, engineered tech stack compared
## Features
+![](./images/models.png)
+
**1. LLM Support**: Integration with OpenAI's GPT family of models, or the open-source Llama2 family models. In fact, Dify supports mainstream commercial models and open-source models (locally deployed or based on MaaS).
**2. Prompt IDE**: Visual orchestration of applications and services based on LLMs with your team.
diff --git a/README_CN.md b/README_CN.md
index 63dd7fdaaf..7268c984c8 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -1,4 +1,5 @@
-![](./images/describe-cn.jpg)
+![](./images/describe-en.png)
+
English |
简体中文 |
@@ -9,40 +10,37 @@
#### [官方网站](https://dify.ai) • [使用文档](https://docs.dify.ai/v/zh-hans) · [部署文档](https://docs.dify.ai/v/zh-hans/getting-started/install-self-hosted) · [FAQ](https://docs.dify.ai/v/zh-hans/getting-started/faq) • [Twitter](https://twitter.com/dify_ai) • [Discord](https://discord.gg/FngNHpbcY7)
-**Dify** 是一个易用的 LLMOps 平台,基于不同的大型语言模型能力,让更多人可以简易地创建可持续运营的原生 AI 应用。Dify 提供多种类型应用的可视化编排,应用可开箱即用,也能以“后端即服务”的 API 提供服务。
+Dify 是一个 LLM 应用开发平台,已经有超过 10 万个应用基于 Dify.AI 构建。它融合了 Backend as Service 和 LLMOps 的理念,涵盖了构建生成式 AI 原生应用所需的核心技术栈,包括一个内置 RAG 引擎。使用 Dify,你可以基于任何模型自部署类似 Assistants API 和 GPTs 的能力。
-通过 Dify 创建的应用包含了:
-
-- 开箱即用的的 Web 站点,支持表单模式和聊天对话模式
-- 一套 API 即可包含插件、上下文增强等能力,替你省下了后端代码的编写工作
-- 可视化的对应用进行数据分析,查阅日志或进行标注
-
-https://github.com/langgenius/dify/assets/100913391/f6e658d5-31b3-4c16-a0af-9e191da4d0f6
+![](./images/demo.png)
## 为什么选择Dify
-Dify具有模型中立性,并且是一个完整的、经过工程化的技术栈,与像LangChain这样的硬编码开发库相比。不同于OpenAI的助手API,Dify允许完全本地部署服务。
+Dify 具有模型中立性,相较 LangChain 等硬编码开发库 Dify 是一个完整的、工程化的技术栈,而相较于 OpenAI 的 Assistants API 你可以完全将服务部署在本地。
+
+| 功能 | Dify.AI | Assistants API | LangChain |
+| --- | --- | --- | --- |
+| 编程方式 | 面向 API | 面向 API | 面向 Python 代码 |
+| 生态策略 | 开源 | 封闭且商用 | 开源 |
+| RAG 引擎 | 支持 | 支持 | 不支持 |
+| Prompt IDE | 包含 | 包含 | 没有 |
+| 支持的 LLMs | 丰富 | 仅 GPT | 丰富 |
+| 本地部署 | 支持 | 不支持 | 不适用 |
-| Feature | Dify.AI | Assistants API | LangChain |
-|---------|---------|----------------|-----------|
-| **Programming Approach** | API-oriented | API-oriented | Python Code-oriented |
-| **Ecosystem Strategy** | Open Source | Closed and Commercial | Open Source |
-| **RAG Engine** | Supported | Supported | Not Supported |
-| **Prompt IDE** | Included | Included | None |
-| **Supported LLMs** | Rich Variety | Only GPT | Rich Variety |
-| **Local Deployment** | Supported | Not Supported | Not Applicable |
## 特点
-**1. LLM支持**:与OpenAI的GPT系列模型或开源的Llama2系列模型集成。事实上,Dify支持主流的商业模型和开源模型(本地部署或基于MaaS)。
+![](./images/models.png)
-**2. Prompt IDE**:基于LLM的应用和服务的可视化编排,与您的团队一起。
+**1. LLM支持**:与 OpenAI 的 GPT 系列模型集成,或者与开源的 Llama2 系列模型集成。事实上,Dify支持主流的商业模型和开源模型(本地部署或基于 MaaS)。
-**3. RAG引擎**:包括基于全文索引或向量数据库嵌入的各种RAG能力,允许直接上传PDF、TXT和其他文本格式。
+**2. Prompt IDE**:和团队一起在 Dify 协作,通过可视化的 Prompt 和应用编排工具开发 AI 应用。 支持无缝切换多种大型语言模型。
-**4. 代理**:基于函数调用的代理框架,允许用户配置所见即所得。Dify包括基本的插件功能,如Google搜索。
+**3. RAG引擎**:包括各种基于全文索引或向量数据库嵌入的 RAG 能力,允许直接上传 PDF、TXT 等各种文本格式。
-**5. 持续运营**:监控和分析应用日志和性能,使用生产数据不断改进提示、数据集或模型。
+**4. Agent**:基于函数调用的 Agent框架,允许用户自定义配置,所见即所得。Dify 提供了基本的插件能力,如谷歌搜索。
+
+**5. 持续运营**:监控和分析应用日志和性能,使用生产数据持续改进 Prompt、数据集或模型。
## 安装社区版
### 系统要求
@@ -81,12 +79,12 @@ docker compose up -d
我们欢迎您为 Dify 做出贡献,以帮助改善 Dify。包括:提交代码、问题、新想法,或分享您基于 Dify 创建的有趣且有用的 AI 应用程序。同时,我们也欢迎您在不同的活动、会议和社交媒体上分享 Dify。
-- [GitHub 问题](https://github.com/langgenius/dify/issues)。👉:使用 Dify.AI 时遇到的错误和问题,请参阅[贡献指南](CONTRIBUTING.md)。
+- [GitHub Issues](https://github.com/langgenius/dify/issues)。👉:使用 Dify.AI 时遇到的错误和问题,请参阅[贡献指南](CONTRIBUTING.md)。
- [电子邮件支持](mailto:hello@dify.ai?subject=[GitHub]Questions%20About%20Dify)。👉:关于使用 Dify.AI 的问题。
- [Discord](https://discord.gg/FngNHpbcY7)。👉:分享您的应用程序并与社区交流。
- [Twitter](https://twitter.com/dify_ai)。👉:分享您的应用程序并与社区交流。
- [商业许可](mailto:business@dify.ai?subject=[GitHub]Business%20License%20Inquiry)。👉:有关商业用途许可 Dify.AI 的商业咨询。
-## 安全
+## 安全问题
为了保护您的隐私,请避免在 GitHub 上发布安全问题。发送问题至 security@dify.ai,我们将为您做更细致的解答。
diff --git a/images/demo.png b/images/demo.png
new file mode 100644
index 0000000000000000000000000000000000000000..ad0cbe0fb5b9d0c1ab2b97cf20bd50945a0af824
GIT binary patch
literal 808888
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