代理
2.13 版本引入
代理是一种协调器,它使用大型语言模型(LLM)来解决问题。在 LLM 推理并决定采取何种行动后,代理协调行动的执行。OpenSearch 支持以下代理类型:
- 流式代理:按照其配置中指定的顺序,依次运行工具。流式代理的工作流是固定的。适用于检索增强生成(RAG)。
- 会话流式代理:按照其配置中指定的顺序,依次运行工具。会话流式代理的工作流是固定的。存储会话历史记录,以便用户可以提出后续问题。适用于创建聊天机器人。
- 会话代理:通过推理,根据可用知识(包括 LLM 知识库和提供给 LLM 的一组工具)提供响应。LLM 迭代推理以决定采取何种行动,直到获得最终答案或达到迭代限制。存储会话历史记录,以便用户可以提出后续问题。会话代理的工作流是可变的,根据后续问题而定。对于特定问题,使用思维链(CoT)过程从配置的工具中选择最佳工具来回答问题。适用于创建采用 RAG 的聊天机器人。
- 规划-执行-反思代理:动态规划、执行并完善多步骤工作流,以解决复杂任务。在内部,规划-执行-反思代理使用会话代理来执行计划中的每个独立步骤。代理根据工具描述和上下文自动为每个步骤选择最合适的工具。非常适用于需要迭代推理和自适应执行的长时间运行、探索性过程。适用于进行研究或执行根本原因分析(RCA)。
隐藏代理
2.13 版本引入
为了向包括集群管理员在内的最终用户隐藏代理详细信息,您可以注册一个隐藏代理。如果代理是隐藏的,非超级管理员用户无权调用该代理上的任何代理 API,但执行 API除外。
只有超级管理员用户才能注册隐藏代理。要注册隐藏代理,您首先需要使用管理员证书进行身份验证。
curl -k --cert ./kirk.pem --key ./kirk-key.pem -XGET 'https://:9200/.opendistro_security/_search'
超级管理员用户创建的所有代理都会自动注册为隐藏代理。只有超级管理员用户才能查看隐藏代理的详细信息和删除隐藏代理。要注册隐藏代理,请向 _register
端点发送请求:
curl -k --cert ./kirk.pem --key ./kirk-key.pem -X POST 'https://:9200/_plugins/_ml/agents/_register' -H 'Content-Type: application/json' -d '
{
"name": "Test_Agent_For_RAG",
"type": "flow",
"description": "this is a test agent",
"tools": [
{
"name": "vector_tool",
"type": "VectorDBTool",
"parameters": {
"model_id": "zBRyYIsBls05QaITo5ex",
"index": "my_test_data",
"embedding_field": "embedding",
"source_field": [
"text"
],
"input": "${parameters.question}"
}
},
{
"type": "MLModelTool",
"description": "A general tool to answer any question",
"parameters": {
"model_id": "NWR9YIsBUysqmzBdifVJ",
"prompt": "\n\nHuman:You are a professional data analyst. You will always answer question based on the given context first. If the answer is not directly shown in the context, you will analyze the data and find the answer. If you don't know the answer, just say don't know. \n\n Context:\n${parameters.vector_tool.output}\n\nHuman:${parameters.question}\n\nAssistant:"
}
}
]
}'
后续步骤
- 要了解有关注册代理的更多信息,请参阅注册代理 API。
- 有关支持的工具列表,请参阅工具。
- 有关分步教程,请参阅代理和工具教程。
- 有关使用规划-执行-反思代理的分步教程,请参阅构建规划-执行-反思代理。
- 有关支持的 API,请参阅代理 API。
- 要在配置自动化中使用代理和工具,请参阅自动化配置。