Skip to content

Commit 9d5c691

Browse files
committed
feat: optimize when-to-use-response-api
1 parent 0218a0d commit 9d5c691

1 file changed

Lines changed: 48 additions & 16 deletions

File tree

docs/bella-assistants/when-to-use-response-api.md

Lines changed: 48 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,67 @@
11
# 我的Agent服务是否应该使用Response API?
22

3-
## 考虑用户问题的确定性
4-
- 这里“具有确定性的问题”,是指可以抽象出既定程序来解决的问题。与之相对,“具有不确定性的问题”,是指需要依赖模型的多步推理以及与用户的多轮交互来确定如何处理的问题。
5-
- 对于功能单一纯粹的Agent来说,用户对其的诉求是可确定的,那么大概率是可以抽象出设定好的流程编排,那么推荐使用`Chat Completions + Bella Workflow`实现Agent。效果最稳定,实现也最简单。
6-
- 如果户的输入可能没那么强的确定性,比如较为复杂的智能客服,可能处理几百上千种用户的问题,此时枚举分类各种场景,再为每个场景定制流程显然是一种费时费力的方法。此时就应该给模型更大的选择权,通过提示词的引导让模型自主决策下一步该做什么。
3+
## 功能性考量——你的Agent需要什么功能
74

8-
**举例**
9-
- 为Bella Openapi服务实现一个为用户查询账单的Agent,流程非常固定,只需要使用LLM提取用户信息以及用户问题中的查询信息,再调用查询账单的接口。这个场景肯定是使用`Chat Completions + Bella Workflow`最简单,不需要考虑Response API。
10-
- 上文举例的支持多种类型问答的智能客服,就可以考虑使用Response API
5+
判断是否应该选择Response API,最基本的一点,是要看你的服务**目前或未来**是否需要response api的特性。
6+
7+
如果不需要,那么继续使用更为简单的chat completions接口,性能会比response api更佳
118

12-
## 考虑Agent需要的功能
139
对比Response API,Chat Completions是一个更单纯的接口。可以说Response API涵盖了Chat Completions。
1410

1511
> Chat Completions = 开启非store模式 + 不使用任何内置工具(只使用function call)+ 不使用audio/file input 的 Response API
1612
17-
判断是否应该选择Response API,要看你的服务**目前或未来**是否需要这些response api的特性。如果需要,那么建议切换。如果不需要,那么继续使用更为简单的chat completions接口,性能会比response api更佳。
13+
如果需要使用Response API的功能,也不一定必须要使用Response API,因为Bella的其他能力,比如`Bella-Workflow`同样可以很方便地使用这些工具。我们还要继续思考以下问题。
14+
15+
## 智能性考量——考虑用户问题的复杂性
16+
17+
从智能性的角度,所谓“不复杂的问题”,指问题是否具有“确定性”,可能解决一个问题的步骤很繁琐,但是只要是可以抽象出既定程序和确定步骤来解决的问题,即视为“不复杂的问题”。
18+
19+
与之相对,“复杂的问题”,是指需要依赖模型的多步推理以及与用户的多轮交互来决策如何处理的问题。
20+
21+
对于功能单一纯粹的Agent来说,用户对其的诉求是可确定的,那么大概率是可以抽象出设定好的流程编排,那么推荐使用`Chat Completions + Bella Workflow`实现Agent。效果最稳定,实现也最简单。
22+
23+
可是,如果一个Agent的目标用户的诉求没那么强的确定性,比如一个房地产领域的知识专家。 这个Agent可能面临的用户的问题种类数不胜数,无法罗列归类,此时就不可能去枚举分类各种场景,再为每个场景定制流程了。
24+
25+
且解决这些问题可能需要与用户进行多轮交互,不断地修正答案。 此时就应该给模型更大的选择权,通过提示词的引导让模型自主决策下一步该做什么。
26+
27+
**举例**
28+
- 为Bella Openapi服务实现一个为用户查询账单的Agent,流程非常固定,只需要使用LLM提取用户信息以及用户问题中的查询信息,再调用查询账单的接口。这个场景肯定是使用`Chat Completions + Bella Workflow`最简单,不需要考虑Response API。
29+
- 上文举例的房地产领域的知识专家,就可以考虑使用Response API。再比如实现一个Code Agent,它所需面临的问题可想而知,更不可能使用既定流程解决问题,需要高度的智能化,此时就可以考虑使用Response API来实现。
30+
1831

19-
## 考虑Agent服务的定位
32+
## 服务层级的考量——你的服务的定位是什么
2033
前文已经讨论过,如果去实现一件`需要模型高自由度的自主决策且多轮交互`的事情,此时轻量级的`Chat Completions + Bella Workflow`就没那么好用了。
2134

22-
但是很多时候,你或许希望快速搭建一个Agent应用做这样一件复杂的事情,甚至可能只是想在正式开始做某个领域的Agent之前,临时做一个demo来验证自己的某个想法是否可行。
35+
此时,便可以考虑使用Response API。可是一定需要使用它吗?设想如下两个场景:
36+
37+
**场景1**
38+
39+
你希望快速搭建一个Agent应用做一件比较复杂的事情,或者说你只是想在正式开始做某个领域的Agent之前,临时做一个demo来验证自己的某个想法是否可行。
40+
41+
在此场景下,你当然不希望做一个沉重的系统,你的需求就只是一个低成本的、简洁的、可快速实现核心功能的轻量级服务。对稳定性、性能的要求没那么高。
42+
43+
此时,Response API就完全满足你的需求。直接使用`store`模式,你甚至不需要实现任何的上下文管理工程,只需要简单的接口调用即可实现所有功能。
44+
45+
甚至`response api`丰富的内置工具生态,可能你不需要实现任何客户端的工具调用,或者是只需要提供一个mcp服务。开发极其简单
46+
47+
面对此场景时,你可以借助Response API快速做出很多轻量级的应用,去探索AI应用的可能性。它的价值在于帮助你快速落地、快速验证。
48+
49+
**场景2**
50+
51+
你的服务规模庞大、稳定性、效果要求极高,或是需要很定制化的对话管理。
52+
53+
此时就不建议依赖`store`模式的Response API来实现用户对话的管理。因为Response API归根结底,是一个通用的智能体解决方案,不可能针对所有场景做出足够的优化。
2354

24-
你当然不希望,做一个沉重的系统,你的需求就只是一个低成本的、简洁的、可快速实现核心功能的轻量级服务。对稳定性、性能的要求没那么高
55+
一个追求泛化的通用智能体,在性能、稳定性和效果方面肯定是不如经过层层优化的垂直领域智能体
2556

26-
此时,Response API就完全满足你的需求。你甚至不需要实现上下文管理工程,简单的接口调用即可实现所有功能
57+
但是如果有功能层面的需求,依然可以使用Response API的`非store`模式来直接使用丰富的工具生态,减少开发成本
2758

28-
你可以借助Response API快速做出很多轻量级的应用,去探索AI应用的可能性。它的价值在于帮助你快速落地、快速验证。
59+
**小结**
60+
- 其实服务规模庞大、稳定性、效果要求极高的场景没那么多。Response API,从逻辑上讲,是能cover非常多场景的,但也需要更多的工程落地进一步验证其可行性
61+
- 通用智能体的意义可能不在于取代所有智能体,或许它可以作为辅助Agent开发者进行创作的万能助手,再此基础上探索出特定领域更优秀的智能体解决方案
2962

30-
如果服务规模庞大、稳定性要求极高的场景,不建议依赖`store`模式的Response API来实现用户对话的管理。 但是如果有功能层面的需求,依然可以使用Response API的`非store`模式来直接使用丰富的工具生态,减少开发成本。
63+
## 可持续发展的考量——考虑未来的发展
3164

32-
## 考虑未来的发展
3365
Response API所实现的内置工具,是成了Bella服务体系下的各个AI能力点。
3466

3567
在实现一个复杂的Agent系统时,当然可以使用function call实现自己的自定义工具,而不使用Response API的内置工具。

0 commit comments

Comments
 (0)