Skip to main content
应用调用

应用的自定义参数传递

本文介绍如何在阿里云百炼的 智能体应用 和 工作流应用 (智能体编排应用已被工作流应用替代)调用中使用自定义参数传递功能,主要适用于自定义插件与自定义节点的参数传递。

您需要已获取与配置 API Key配置API Key到环境变量。如果通过SDK调用,还需要安装DashScope SDK。请将示例代码中的 DASHSCOPE_API_HOST 替换为获取的 API Host。

自定义插件参数传递

本文以寝室公约内容查询工具作为示例,向您展示API如何调用应用的自定义插件参数传递功能。
自定义插件的参数通过关联的智能体应用传递,或通过工作流应用中的插件节点传递。
下方示例展示在智能体应用中如何传递自定义插件参数。

如何使用

步骤一:创建自定义插件工具

如果已创建插件工具或已导入了插件,请跳过此步骤。
  1. 创建自定义插件:访问百炼控制台的插件页面,单击新增自定义插件,填写插件信息,如需要鉴权请打开是否鉴权开关,填写鉴权配置信息。
    示例插件描述:寝室公约查询工具,可以根据输入的数字索引查询特定条目。
    示例插件 URL:https://domitorgreement-plugin-example-icohrkdjxy.cn-beijing.fcapp.run
    示例鉴权配置:鉴权类型选择用户级鉴权,位置选择Header,Type 选择 basic 请注意:插件描述是对插件用途的简要说明,能帮助大模型判断当前任务是否需要调用当前插件,请使用自然语言进行描述。
  2. 创建工具:填写工具信息,配置输入参数和输出参数。请注意:
    1. 工具描述能帮助大模型更好的理解工具功能和使用场景。请使用自然语言进行描述,尽量给出使用示例。
    2. 参数名称尽可能带有含义,可以帮助大模型理解当前需要识别的参数信息是什么。
    3. 参数描述是对该入参的功能描述,要简练且准确,帮助大模型进一步理解取参的方式。
    4. 输入参数的传参方式务必选择业务透传
    此处示例将寝室公约内容索引article_index设置为业务透传参数。 填写工具名称为 寝室公约查询工具,请求方法选择 POST,提交方式选择 application/json。输入参数 article_index 的类型设为 Number,传入方法选择 Body,设置为必填。输出参数名称填写 article,参数描述填写"寝室公约内容",类型设为 String
  3. 单击测试工具,运行通过后,发布插件。

步骤二:智能体应用关联指定插件

插件工具只能与位于相同业务空间里的智能体应用关联。
  1. 可在已发布的插件卡片上单击添加到智能体,选择需要关联的智能体应用;
  2. 也可在应用内单击+插件,关联指定的自定义插件;
  3. 然后直接发布应用。

步骤三:API调用

  • 无需鉴权时:通过API调用自定义插件,使用biz_paramsuser_defined_params传递自定义插件信息,your_plugin_code替换为实际的插件ID,并传递插件中配置的输入参数键值对。
    插件ID可在插件卡片上获取。
    本示例中传入寝室公约索引article_index参数值为2,查询第二条寝室公约内容,并返回正确结果。
    • Python
    • Java
    • HTTP
    请求示例
    import os
    from http import HTTPStatus
    # 建议dashscope SDK 的版本 >= 1.14.0
    from dashscope import Application
    biz_params = {
        # 智能体应用的自定义插件输入参数传递,自定义的插件ID替换your_plugin_code
        "user_defined_params": {
            "your_plugin_code": {
                "article_index": 2}}}
    response = Application.call(
            # 若没有配置环境变量,可用百炼API Key将下行替换为:api_key="sk-xxx"。但不建议在生产环境中直接将API Key硬编码到代码中,以减少API Key泄露风险。
            api_key=os.getenv("DASHSCOPE_API_KEY"),
            app_id='YOUR_APP_ID',
            prompt='寝室公约内容',
            biz_params=biz_params)
    if response.status_code != HTTPStatus.OK:
        print(f'request_id={response.request_id}')
        print(f'code={response.status_code}')
        print(f'message={response.message}')
        print(f'请参考文档:https://help.aliyun.com/zh/model-studio/developer-reference/error-code')
    else:
        print('%s\n' % (response.output.text))  # 处理只输出文本text
        # print('%s\n' % (response.usage))
    
    响应示例
    寝室公约的第二条规定如下:
    "寝室成员应当互帮互助、互相关心、互相学习、共同提高;宽容谦让、相互尊重、以诚相待。"
    这表明在寝室内,成员之间应该培养一种积极正面的生活和学习氛围,彼此帮助和支持,同时也要学会理解和尊重他人。如果您需要了解公约的其他条款,请告诉我!
    
  • 需要鉴权时:通过API调用自定义插件,插件中打开了鉴权开关,配置了用户级鉴权
    插件ID在插件卡片上获取。
    • 使用biz_paramsuser_defined_params传递自定义插件信息,your_plugin_code替换为实际的插件ID,并传入插件中配置的输入参数键值对。
    • 使用 biz_paramsuser_defined_tokens传递相关信息,your_plugin_code替换为实际的插件ID,user_token的参数值填入鉴权信息,如实际DASHSCOPE_API_KEY的值。
    • 鉴权通过后根据传递的索引参数查询特定条目并正确返回结果。
    本示例中传入寝室公约索引article_index参数值为2,user_token的值YOUR_TOKEN替换为实际DASHSCOPE_API_KEY的值。鉴权通过后,查询第二条寝室公约内容,并返回正确结果。
    • Python
    • Java
    • HTTP
    请求示例
    from http import HTTPStatus
    import os
    # 建议dashscope SDK 的版本 >= 1.14.0
    from dashscope import Application
    biz_params = {
        # 智能体应用的自定义插件鉴权传递,自定义的插件ID替换your_plugin_code,鉴权信息替换YOUR_TOKEN,如API key
        "user_defined_params": {
            "your_plugin_code": {
                "article_index": 2}},
        "user_defined_tokens": {
            "your_plugin_code": {
                "user_token": "YOUR_TOKEN"}}}
    response = Application.call(
                # 若没有配置环境变量,可用百炼API Key将下行替换为:api_key="sk-xxx"。但不建议在生产环境中直接将API Key硬编码到代码中,以减少API Key泄露风险。
                api_key=os.getenv("DASHSCOPE_API_KEY"),
                app_id='YOUR_APP_ID',
                prompt='寝室公约内容',
                biz_params=biz_params)
    if response.status_code != HTTPStatus.OK:
        print(f'request_id={response.request_id}')
        print(f'code={response.status_code}')
        print(f'message={response.message}')
        print(f'请参考文档:https://help.aliyun.com/zh/model-studio/developer-reference/error-code')
    else:
        print('%s\n' % (response.output.text))  # 处理只输出文本text
        # print('%s\n' % (response.usage))
    
    响应示例
    寝室公约的第二条规定如下:
    寝室成员应当互帮互助、互相关心、互相学习、共同提高;宽容谦让、相互尊重、以诚相待。
    如果您需要了解更多的规定内容,请告诉我。
    

自定义节点参数传递

本文以根据城市名查询城市行政区域划分作为示例,向您展示API如何调用应用的自定义节点参数传递功能。
应用的自定义节点参数通过工作流应用的开始节点传递。
下方示例展示在工作流应用中,传递开始节点的自定义参数。

如何使用

步骤一:自定义节点参数

访问百炼控制台的应用管理页面,选择工作流应用并自定义开始节点的参数(示例设置String类型变量city),同时在Prompt中插入变量city和变量query,并发布应用。

步骤二:API调用

调用时通过biz_params字段传递city,通过prompt字段传递query。
  • Python
  • Java
  • HTTP
请求示例
import os
from http import HTTPStatus
from dashscope import Application
# 工作流应用自定义参数传递
biz_params = {"city": "杭州"}
response = Application.call(
    # 若没有配置环境变量,可用百炼API Key将下行替换为:api_key="sk-xxx"。但不建议在生产环境中直接将API Key硬编码到代码中,以减少API Key泄露风险。
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    app_id='YOUR_APP_ID',  # 替换为实际的应用 ID
    prompt='查询这个城市的行政区域划分',
    biz_params=biz_params  # 传递业务参数
)
if response.status_code != HTTPStatus.OK:
    print(f'request_id={response.request_id}')
    print(f'code={response.status_code}')
    print(f'message={response.message}')
    print(f'请参考文档:https://help.aliyun.com/zh/model-studio/developer-reference/error-code')
else:
    print(f'{response.output.text}')  # 处理只输出文本text
响应示例
杭州市,作为浙江省的省会城市,其行政区域划分包括10个市辖区:上城区、拱墅区、西湖区、滨江区、萧山区、余杭区、临平区、钱塘区、富阳区、临安区。每个区都有其独特的特色和发展重点。
- 上城区:位于杭州市中心地带,是杭州的政治、经济、文化中心之一。
- 拱墅区:以运河文化为特色,拥有众多历史文化遗产。
- 西湖区:著名的西湖风景区就位于此区,是旅游观光的重要目的地。
- 滨江区:高新技术产业聚集地,阿里巴巴等知名企业坐落于此。
- 萧山区:东南部的一个行政区,经济发展迅速,特别是制造业方面。
- 余杭区:近年来发展快速,尤其是互联网经济领域,阿里巴巴总部也设在这里(注:阿里巴巴总部实际位于滨江区)。
- 临平区:新成立的行政区,旨在促进该地区经济社会全面发展。
- 钱塘区:同样是一个较新的行政区划调整结果,强调创新发展和生态保护相结合。
- 富阳区:位于杭州西南方向,以其丰富的自然景观和悠久的历史文化著称。
- 临安区:地处杭州西部,以生态优美闻名,并且有着深厚的文化底蕴。
请注意,随着时间推移,具体的城市规划可能会有所变化,请参考最新的官方信息。

相关文档

自定义插件:自定义插件的创建步骤。 调用智能体应用调用工作流应用:应用的调用方式及更多用法。 应用调用API:完整的参数列表和调用示例。
Managed Agents
数据连接
Skill
应用评测
应用广场
权限管理