Skip to main content

Llamada a aplicaciones

Puede integrar aplicaciones de Model Studio, como agentes, flujos de trabajo u orquestaciones de agentes, en sus sistemas empresariales mediante el SDK de DashScope o HTTP.

Requisitos previos

Puede usar el SDK de DashScope o una interfaz HTTP para llamar a una aplicación de Model Studio.
Independientemente del método de llamada, debe configurar la clave API como una variable de entorno. Si utiliza el SDK de DashScope, también debe instalar el SDK de DashScope.

Uso

Conversación de una sola ronda

Código de ejemplo para el SDK de DashScope o el método HTTP para implementar una conversación de una sola ronda.
  • Python
  • Java
  • HTTP
Solicitud de ejemplo
import os
import dashscope
from dashscope.v2 import DashScopeError

# La siguiente es la configuración de la región de Singapur. Sustituya {WorkspaceId} por el ID de su workspace. El valor de region varía según la región.
client = dashscope.Client(
    # Si no utiliza una variable de entorno, configure su API key directamente (por ejemplo, api_key="sk-xxx"). No se recomienda codificar la API key en el código en entornos de producción, para reducir el riesgo de filtración de la API key.
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    workspace="{WorkspaceId}",
    region="ap-southeast-1",
)
try:
    response = client.apps.completions.create(
        app_id='YOUR_APP_ID',  # Sustituya por el ID real de su aplicación
        prompt='Who are you?')
    print(response.text)
except DashScopeError as e:
    print(f'request_id={e.request_id}')
    print(f'code={e.code}')
    print(f'message={e.message}')
    print(f'Consulte la documentación: https://www.alibabacloud.com/help/model-studio/developer-reference/error-code')
Respuesta de ejemplo
I am a large language model developed by Alibaba Cloud, named Qwen. I am designed to help users generate various types of text, such as articles, stories, poems, stories, etc., and can be adjusted and optimized according to different scenarios and needs. In addition, I can also answer various questions, provide information and explanations, and assist in learning and research. If you have any needs, please feel free to ask me questions at any time!

Conversación de múltiples rondas

En las conversaciones de múltiples rondas, el LLM puede hacer referencia al historial de conversaciones, lo que lo hace más similar a los escenarios de comunicación cotidiana.
Actualmente, solo las aplicaciones de agente y las aplicaciones de flujo de trabajo de diálogo admiten conversaciones de múltiples rondas.
  • Cuando pasa session_id, la solicitud lleva automáticamente el historial de conversaciones almacenado en la nube.
    Al pasar session_id, se requiere prompt.
  • También puede optar por mantener un arreglo messages. Agregue cada ronda del historial de conversaciones y las nuevas instrucciones al arreglo messages. Luego, pase el historial a través de messages.
    Al pasar messages, prompt es opcional. Si se pasan ambos, prompt se agregará al final de messages como información complementaria.
Si se pasan tanto session_id como messages, se utilizará preferentemente messages.
  • Almacenamiento en la nube (session_id)
  • Autogestión (mensajes)
  • Python
  • Java
  • HTTP
Solicitud de ejemplo
import os
import dashscope
from dashscope.v2 import DashScopeError

# La siguiente es la configuración de la región de Singapur. Sustituya {WorkspaceId} por el ID de su workspace. El valor de region varía según la región.
client = dashscope.Client(
    # Si no utiliza una variable de entorno, configure su API key directamente (por ejemplo, api_key="sk-xxx"). No se recomienda codificar la API key en el código en entornos de producción, para reducir el riesgo de filtración de la API key.
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    workspace="{WorkspaceId}",
    region="ap-southeast-1",
)

def call_with_session():
    try:
        response = client.apps.completions.create(
            app_id='YOUR_APP_ID',  # Sustituya por el ID real de su aplicación
            prompt='Who are you?')

        responseNext = client.apps.completions.create(
                    app_id='YOUR_APP_ID',  # Sustituya por el ID real de su aplicación
                    prompt='What skills do you have?',
                    session_id=response.session_id)  # session_id de la respuesta anterior

        print('%s\n session_id=%s\n' % (responseNext.text, responseNext.session_id))
        # print('%s\n' % (response.usage))
    except DashScopeError as e:
        print(f'request_id={e.request_id}')
        print(f'code={e.code}')
        print(f'message={e.message}')
        print(f'Consulte la documentación: https://www.alibabacloud.com/help/model-studio/developer-reference/error-code')

if __name__ == '__main__':
    call_with_session()
Respuesta de ejemplo
I have multiple skills and can assist you with various tasks. Here are some of my main skills:

1. **Information retrieval**: Providing weather, news, historical facts, scientific knowledge, and various other information.
2. **Language processing**: Translating text, correcting grammar errors, generating articles and stories.
3. **Technical problem solving**: Answering programming questions, software usage, technical troubleshooting, etc.
4. **Educational assistance**: Helping with questions in subjects like mathematics, physics, chemistry, etc.
5. **Life advice**: Providing advice on health, diet, travel, shopping, etc.
6. **Entertainment interaction**: Telling jokes, playing word games, engaging in simple chat interactions.
7. **Schedule management**: Reminding important dates, arranging schedules, setting reminders.
8. **Data analysis**: Explaining data charts, providing data analysis suggestions.
9. **Emotional support**: Listening to your feelings, providing comfort and support.

If you have specific needs or questions, you can tell me directly, and I'll do my best to help you!
 session_id=98ceb3ca0c4e4b05a20a00f913050b42

Pasar parámetros personalizados

Para adaptar el mismo agente o flujo de trabajo a diferentes escenarios empresariales, puede configurar parámetros personalizados para complementos o nodos, y pasar parámetros a través de biz_params al llamar a la aplicación. Para saber cómo configurar los parámetros, consulte Transferencia de parámetros de aplicación. Código de ejemplo:
  1. Complementos personalizados parámetros: Páselos a través de la Aplicación de Agente asociada o a través del Nodo de Complemento de la Aplicación de Flujo de Trabajo asociada. Puede pasar parámetros e información de autenticación a nivel de usuario para complementos personalizados:
    • Parámetros: user_defined_params.
    • Autenticación a nivel de usuario: user_defined_tokens. user_token es la información de autenticación requerida por el complemento, como la DASHSCOPE_API_KEY.
    El siguiente ejemplo es una Aplicación de Agente que requiere el parámetro index y la información de autenticación a nivel de usuario del complemento asociado.
    Las herramientas de complemento solo se pueden asociar con Aplicaciones de Agente en el mismo espacio de trabajo.
    Reemplace your_plugin_code con el ID de la herramienta de complemento asociada que se muestra en la tarjeta del complemento, y pase los pares clave-valor de los parámetros de entrada. En este ejemplo, article_index con un valor de 2.
    • Paso de parámetros
    • Autenticación a nivel de usuario
    • Python
    • Java
    • HTTP
    Solicitud de ejemplo
    import os
    # La versión del SDK de Dashscope debe ser 2.0.1 o posterior.
    import dashscope
    from dashscope.v2 import DashScopeError
    
    # La siguiente es la configuración de la región de Singapur. Sustituya {WorkspaceId} por el ID de su workspace. El valor de region varía según la región.
    client = dashscope.Client(
        # Si no utiliza una variable de entorno, configure su API key directamente (por ejemplo, api_key="sk-xxx"). No se recomienda codificar la API key en el código en entornos de producción, para reducir el riesgo de filtración de la API key.
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        workspace="{WorkspaceId}",
        region="ap-southeast-1",
    )
    biz_params = {
        # Pase los parámetros de entrada personalizados del complemento para aplicaciones agente. Sustituya your_plugin_code por el ID de su complemento personalizado
        "user_defined_params": {
            "your_plugin_code": {
                "article_index": 2}}}
    try:
        response = client.apps.completions.create(
            app_id='YOUR_APP_ID',
            prompt='Dormitory convention content',
            biz_params=biz_params)
        print('%s\n' % (response.text))  # Procesar para obtener solo la salida de texto
        # print('%s\n' % (response.usage))
    except DashScopeError as e:
        print(f'request_id={e.request_id}')
        print(f'code={e.code}')
        print(f'message={e.message}')
        print(f'Consulte la documentación: https://www.alibabacloud.com/help/model-studio/developer-reference/error-code')
    
    Respuesta de ejemplo
    The second rule of the Dormitory Convention states:
    
    "Dormitory members should help each other, care for each other, learn from each other, and improve together; be tolerant, humble, respect each other, and treat each other with sincerity."
    
    This indicates that within the dormitory, members should cultivate a positive atmosphere for living and studying, support and assist each other, and also learn to understand and respect one another. If you need to know about other clauses of the convention, please let me know!
    
  2. Parámetros de nodo personalizados: Páselos a través del Nodo de Inicio de la Aplicación de Flujo de Trabajo, o a través del Nodo de Aplicación de la Aplicación de Orquestación de Agentes. En el siguiente ejemplo, la Aplicación de Flujo de Trabajo define un parámetro city en el Nodo de Inicio. Inserte las variables city y query en el Prompt, y luego Publique la aplicación.
    imagen
    Al realizar la llamada, pase city a través de biz_params y pase query a través de prompt.
    • Python
    • Java
    • HTTP
    Solicitud de ejemplo
    import os
    import dashscope
    from dashscope.v2 import DashScopeError
    
    # La siguiente es la configuración de la región de Singapur. Sustituya {WorkspaceId} por el ID de su workspace. El valor de region varía según la región.
    client = dashscope.Client(
        # Si no utiliza una variable de entorno, configure su API key directamente (por ejemplo, api_key="sk-xxx"). No se recomienda codificar la API key en el código en entornos de producción, para reducir el riesgo de filtración de la API key.
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        workspace="{WorkspaceId}",
        region="ap-southeast-1",
    )
    # Pase parámetros personalizados de aplicaciones de flujo de trabajo o de orquestación de agentes
    biz_params = {"city": "Hangzhou"}
    try:
        response = client.apps.completions.create(
            app_id='YOUR_APP_ID',  # Sustituya por el ID real de su aplicación
            prompt='Query the administrative divisions of this city',
            biz_params=biz_params  # Pase parámetros de negocio
        )
        print(f'{response.text}')  # Procesar para obtener solo la salida de texto
    except DashScopeError as e:
        print(f'request_id={e.request_id}')
        print(f'code={e.code}')
        print(f'message={e.message}')
        print(f'Consulte la documentación: https://www.alibabacloud.com/help/model-studio/developer-reference/error-code')
    
    Respuesta de ejemplo
    The city of Hangzhou, as the capital of Zhejiang Province, has an administrative division consisting of 10 districts: Shangcheng District, Gongshu District, Xihu District, Binjiang District, Xiaoshan District, Yuhang District, Linping District, Qiantang District, Fuyang District, and Lin'an District. Each district has its own unique characteristics and development focus.
    
    - Shangcheng District: Located in the central area of Hangzhou, it is one of the political, economic, and cultural centers of the city.
    - Gongshu District: Known for its canal culture, it features numerous historical and cultural heritage sites.
    - Xihu District: Famous for the West Lake scenic area, it is an important destination for tourism.
    - Binjiang District: A hub for high-tech industries, with renowned companies like Alibaba situated here.
    - Xiaoshan District: An administrative district in the southeast, experiencing rapid economic growth, particularly in the manufacturing sector.
    - Yuhang District: Has developed rapidly in recent years, especially in the field of internet economy; Alibaba's headquarters is also located here (Note: Alibaba headquarters is actually in Binjiang District).
    - Linping District: A newly established district aimed at promoting comprehensive economic and social development in the area.
    - Qiantang District: Also a result of recent administrative adjustments, focusing on the integration of innovation and ecological protection.
    - Fuyang District: Located southwest of Hangzhou, known for its rich natural landscapes and long history and culture.
    - Lin'an District: Situated west of Hangzhou, famous for its beautiful ecological environment and profound cultural heritage.
    
    Please note that city planning may change over time, and it is recommended to refer to the latest official information.
    

Salida por secuencias

En el modo de salida por secuencias, el modelo genera resultados intermedios, y el resultado final se forma concatenando estos resultados intermedios. Puede leer a medida que el modelo genera la salida, reduciendo así el tiempo de espera para la respuesta del modelo. Dependiendo del método de llamada, puede configurar parámetros para implementar la salida por secuencias:
  • SDK de Python: Establezca stream en True.
  • SDK de Java: Llame a través de la interfaz streamCall.
  • HTTP: Especifique X-DashScope-SSE como enable en el encabezado.
De forma predeterminada, la salida en streaming no es incremental, lo que significa que cada retorno incluye todo el contenido generado previamente. Para utilizar la salida en streaming incremental, establezca el parámetro incremental_output (incrementalOutput para Java) en true. Para HTTP, establezca incremental_output en true y colóquelo en el objeto de parámetros.
Ejemplos:
  • Para la Aplicación de Agente:
    • Python
    • Java
    • HTTP
    Solicitud de ejemplo
    import os
    import dashscope
    from dashscope.v2 import DashScopeError
    
    # La siguiente es la configuración de la región de Singapur. Sustituya {WorkspaceId} por el ID de su workspace. El valor de region varía según la región.
    client = dashscope.Client(
                # Si no utiliza una variable de entorno, configure su API key directamente (por ejemplo, api_key="sk-xxx"). No se recomienda codificar la API key en el código en entornos de producción, para reducir el riesgo de filtración de la API key.
                api_key=os.getenv("DASHSCOPE_API_KEY"),
                workspace="{WorkspaceId}",
                region="ap-southeast-1",
    )
    try:
        stream = client.apps.completions.create(
                    app_id='YOUR_APP_ID',
                    prompt='Who are you?',
                    stream=True,  # Habilite la salida en streaming
                    incremental_output=True)  # Habilite la salida incremental
    
        for partial in stream:
            print(f'{partial.text}\n')  # Procesar para obtener solo la salida de texto
    except DashScopeError as e:
        print(f'request_id={e.request_id}')
        print(f'code={e.code}')
        print(f'message={e.message}')
        print(f'Consulte la documentación: https://www.alibabacloud.com/help/model-studio/developer-reference/error-code')
    
    Respuesta de ejemplo
    I am
    
    Alibaba
    
    Cloud
    
    's large-scale language model
    
    , my name is
    
    Qwen.
    
  • La Aplicación de flujo de trabajo proporciona dos modos de salida por secuencias, determinados por el valor de flow_stream_mode. Valores de parámetros y métodos de uso:
    • full_thoughts (valor predeterminado):
      • Descripción: Los resultados de transmisión de todos los nodos se generarán en el campo thoughts.
      • Requisito: También debe establecer has_thoughts en True.
    • agent_format:
      • Descripción: El mismo modo de salida que las aplicaciones de agente.
      • Efecto: En la consola, puede activar el interruptor de Respuesta para un nodo específico, y los resultados de transmisión de ese nodo se incluirán en el campo text de output.
      • Escenario: Adecuado para escenarios donde solo le interesa la salida de nodos intermedios específicos.
      El interruptor de Respuesta solo está disponible en nodos de Conversión de Texto, nodos LLM y nodos Final (el interruptor está activado de forma predeterminada para los nodos Final). Los nodos que no admiten salida por secuencias generarán su contenido todo a la vez.
    Ejemplo:
    • full_thoughts
    • agent_format
    Esta es una Aplicación de flujo de trabajo publicada con salida por secuencias.
    imagen
    • Python
    • Java
    • HTTP
    Solicitud de ejemplo
    import os
    import dashscope
    from dashscope.v2 import DashScopeError
    
    # La siguiente es la configuración de la región de Singapur. Sustituya {WorkspaceId} por el ID de su workspace. El valor de region varía según la región.
    client = dashscope.Client(
        # Si no utiliza una variable de entorno, configure su API key directamente (por ejemplo, api_key="sk-xxx"). No se recomienda codificar la API key en el código en entornos de producción, para reducir el riesgo de filtración de la API key.
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        workspace="{WorkspaceId}",
        region="ap-southeast-1",
    )
    biz_params = {
        "city": "Hangzhou"}
    try:
        stream = client.apps.completions.create(
            # Sustituya por el ID real de su aplicación
            app_id='YOUR_APP_ID',
            prompt='Hello',
            biz_params=biz_params,
            # Habilite la salida en streaming
            stream=True,
            # incremental_output en true habilita la salida incremental, en false la deshabilita; el valor predeterminado es false si no se especifica
            incremental_output=True,
            # has_thoughts debe establecerse en True
            has_thoughts=True)
    
        for response in stream:
            print(f'{response.thoughts}\n')  # La salida devuelve solo los thoughts; la información del proceso se devuelve en el campo thoughts
    except DashScopeError as e:
        print(f'request_id={e.request_id}')
        print(f'code={e.code}')
        print(f'message={e.message}')
        print(f'Consulte la documentación: https://www.alibabacloud.com/help/model-studio/developer-reference/error-code')
    
    Respuesta de ejemplo
    [ApplicationThought(thought=None, action_type=None, response='{"nodeName":"Start","nodeType":"Start","nodeStatus":"success","nodeId":"Start_bYxoRU","nodeExecTime":"0ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_99FA","nodeResult":"{\\"result\\":\\"\\"}","nodeType":"LLM","nodeStatus":"executing","nodeId":"LLM_99FA"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None)]
    
    [ApplicationThought(thought=None, action_type=None, response='{"nodeName":"Start","nodeType":"Start","nodeStatus":"success","nodeId":"Start_bYxoRU","nodeExecTime":"0ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_1","nodeResult":"{\\"result\\":\\"Dongpo\\"}","nodeType":"LLM","nodeStatus":"executing","nodeId":"LLM_99FA"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None)]
    
    [ApplicationThought(thought=None, action_type=None, response='{"nodeName":"Start","nodeType":"Start","nodeStatus":"success","nodeId":"Start_bYxoRU","nodeExecTime":"0ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_1","nodeResult":"{\\"result\\":\\" Pork, West Lake Vinegar Fish,\\"}","nodeType":"LLM","nodeStatus":"executing","nodeId":"LLM_99FA"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None)]
    
    [ApplicationThought(thought=None, action_type=None, response='{"nodeName":"Start","nodeType":"Start","nodeStatus":"success","nodeId":"Start_bYxoRU","nodeExecTime":"0ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_1","nodeResult":"{\\"result\\":\\" Longjing Shrimp, Hangzhou Pa\\"}","nodeType":"LLM","nodeStatus":"executing","nodeId":"LLM_99FA"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None)]
    
    [ApplicationThought(thought=None, action_type=None, response='{"nodeName":"Start","nodeType":"Start","nodeStatus":"success","nodeId":"Start_bYxoRU","nodeExecTime":"0ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_1","nodeResult":"{\\"result\\":\\"stry, Beggar\'s Chicken\\"}","nodeType":"LLM","nodeStatus":"success","nodeId":"LLM_99FA","nodeExecTime":"1027ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_qkYJ","nodeResult":"{\\"result\\":\\"\\"}","nodeType":"LLM","nodeStatus":"executing","nodeId":"LLM_qkYJ"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None)]
    
    [ApplicationThought(thought=None, action_type=None, response='{"nodeName":"Start","nodeType":"Start","nodeStatus":"success","nodeId":"Start_bYxoRU","nodeExecTime":"0ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_1","nodeResult":"{\\"result\\":\\"\\"}","nodeType":"LLM","nodeStatus":"success","nodeId":"LLM_99FA","nodeExecTime":"1027ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_2","nodeResult":"{\\"result\\":\\"West Lake,\\"}","nodeType":"LLM","nodeStatus":"executing","nodeId":"LLM_qkYJ"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None)]
    
    [ApplicationThought(thought=None, action_type=None, response='{"nodeName":"Start","nodeType":"Start","nodeStatus":"success","nodeId":"Start_bYxoRU","nodeExecTime":"0ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_1","nodeResult":"{\\"result\\":\\"\\"}","nodeType":"LLM","nodeStatus":"success","nodeId":"LLM_99FA","nodeExecTime":"1027ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_2","nodeResult":"{\\"result\\":\\" Lingyin Temple, Xixi\\"}","nodeType":"LLM","nodeStatus":"executing","nodeId":"LLM_qkYJ"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None)]
    
    [ApplicationThought(thought=None, action_type=None, response='{"nodeName":"Start","nodeType":"Start","nodeStatus":"success","nodeId":"Start_bYxoRU","nodeExecTime":"0ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_1","nodeResult":"{\\"result\\":\\"\\"}","nodeType":"LLM","nodeStatus":"success","nodeId":"LLM_99FA","nodeExecTime":"1027ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_2","nodeResult":"{\\"result\\":\\" National Wetland Park, Hefang\\"}","nodeType":"LLM","nodeStatus":"executing","nodeId":"LLM_qkYJ"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None)]
    
    [ApplicationThought(thought=None, action_type=None, response='{"nodeName":"Start","nodeType":"Start","nodeStatus":"success","nodeId":"Start_bYxoRU","nodeExecTime":"0ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_1","nodeResult":"{\\"result\\":\\"\\"}","nodeType":"LLM","nodeStatus":"success","nodeId":"LLM_99FA","nodeExecTime":"1027ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_2","nodeResult":"{\\"result\\":\\" Street, Hangzhou Botanical Garden\\"}","nodeType":"LLM","nodeStatus":"executing","nodeId":"LLM_qkYJ"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None)]
    
    [ApplicationThought(thought=None, action_type=None, response='{"nodeName":"Start","nodeType":"Start","nodeStatus":"success","nodeId":"Start_bYxoRU","nodeExecTime":"0ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_1","nodeResult":"{\\"result\\":\\"\\"}","nodeType":"LLM","nodeStatus":"success","nodeId":"LLM_99FA","nodeExecTime":"1027ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"LLM_2","nodeResult":"{\\"result\\":\\"\\"}","nodeType":"LLM","nodeStatus":"success","nodeId":"LLM_qkYJ","nodeExecTime":"1048ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None), ApplicationThought(thought=None, action_type=None, response='{"nodeName":"End","nodeResult":"{\\"result\\":\\"What do you think about our recommendation?\\"}","nodeType":"End","nodeStatus":"success","nodeId":"End_DrQn7F","nodeExecTime":"0ms"}', action_name=None, action=None, action_input_stream=None, action_input=None, observation=None)]
    
    • Cada elemento en thoughts corresponde a los detalles de ejecución de un nodo. A continuación se muestra un ejemplo de resultado de un nodo LLM.
    id:7
    event:result
    :HTTP_STATUS/200
    data:
    {
        "output": {
            "thoughts": [
                {
                    "response": "{\"nodeName\":\"Start\",\"nodeType\":\"Start\",\"nodeStatus\":\"success\",\"nodeId\":\"Start_bYxoRU\",\"nodeExecTime\":\"0ms\"}"
                },
                {
                    "response": "{\"nodeName\":\"LLM_1\",\"nodeResult\":\"{\\\"result\\\":\\\"Songcheng Fish Soup\\\"}\",\"nodeType\":\"LLM\",\"nodeStatus\":\"success\",\"nodeId\":\"LLM_j45e\",\"nodeExecTime\":\"1167ms\"}"
                },
                {
                    "response": "{\"nodeName\":\"LLM_2Km9\",\"nodeResult\":\"{\\\"result\\\":\\\"\\\"}\",\"nodeType\":\"LLM\",\"nodeStatus\":\"executing\",\"nodeId\":\"LLM_2Km9\"}"
                }
            ],
            "session_id": "6035ee0814b64a9fb88346ecaf8b44bf",
            "finish_reason": "null"
        },
        "usage": {
            "models": [
                {
                    "input_tokens": 25,
                    "output_tokens": 21,
                    "model_id": "qwen-max"
                }
            ]
        },
        "request_id": "64825069-b3aa-93a7-bcf1-c66fe57111fd"
    }
    
    Si está interesado en los resultados de transmisión de un nodo LLM (usando LLM_j45e en el ejemplo anterior), puede centrarse en la salida del nodo con nodeId LLM_j45e en cada envío de thoughts.
    • Si un nodo falla, toda la tarea también fallará.

Recuperar base de conocimientos

La base de conocimientos es la capacidad RAG de Model Studio. Puede complementar eficazmente los modelos con conocimientos privados y actualizados. Puede especificar el alcance de recuperación al llamar a las Aplicaciones de Agente para mejorar la precisión de las respuestas.

Antes de comenzar

En la consola de Model Studio, active la Aumentación de Recuperación de Base de Conocimientos para su Aplicación de Agente. Luego, Publique la aplicación.
Omita este requisito previo para las Aplicaciones RAG.

Especificar alcance de recuperación

  1. Para recuperar una base de conocimientos específica, elija uno de los siguientes métodos:
    • En la consola, haga clic en Configure Knowledge Base en la aplicación y seleccione la base de conocimientos especificada. Luego, Publique la aplicación.
    • No asocie la base de conocimientos especificada en la consola. Pase el ID de la base de conocimientos a través de rag_options al realizar una llamada a la API;
    • Asocie la base de conocimientos especificada en la consola y pase el ID de la base de conocimientos a través de rag_options al realizar una llamada a la API.
      En este caso, solo se recuperará la base de conocimiento pasada durante la llamada. Por ejemplo, una Aplicación de Agente está asociada con la base de conocimiento A. Sin embargo, usted especifica la base de conocimiento B al realizar la llamada a la API. Entonces, la base de conocimiento A no se recuperará y solo se recuperará la base de conocimiento B.
    Para obtener el ID de la base de conocimiento (pipeline_ids): Puede obtenerlo en la página de Base de Conocimiento, o utilizar el Data.Id devuelto por la API CreateIndex. CreateIndex solo admite bases de conocimiento no estructuradas. Bailian Phones Specifications.docx se utiliza en los siguientes ejemplos como una base de conocimientos no estructurada.
    • Python
    • Java
    • HTTP
    Solicitud de ejemplo
    import os
    # La versión del SDK de Dashscope debe ser 2.0.1 o posterior.
    import dashscope
    from dashscope.v2 import DashScopeError
    
    # La siguiente es la configuración de la región de Singapur. Sustituya {WorkspaceId} por el ID de su workspace. El valor de region varía según la región.
    client = dashscope.Client(
        # Si no utiliza una variable de entorno, configure su API key directamente (por ejemplo, api_key="sk-xxx"). No se recomienda codificar la API key en el código en entornos de producción, para reducir el riesgo de filtración de la API key.
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        workspace="{WorkspaceId}",
        region="ap-southeast-1",
    )
    
    try:
        response = client.apps.completions.create(
            app_id='YOUR_APP_ID',  # Sustituya YOUR_APP_ID por el ID real de su aplicación
            prompt='Please recommend a mobile phone under 3000 yuan',
            rag_options={
                "pipeline_ids": ["YOUR_PIPELINE_ID1,YOUR_PIPELINE_ID2"],  # Sustituya por los ID reales de sus knowledge bases; separe varios ID con comas
            }
        )
        print('%s\n' % (response.text))  # Procesar para obtener solo la salida de texto
        # print('%s\n' % (response.usage))
    except DashScopeError as e:
        print(f'request_id={e.request_id}')
        print(f'code={e.code}')
        print(f'message={e.message}')
        print(f'Consulte la documentación: https://www.alibabacloud.com/help/model-studio/developer-reference/error-code')
    
    Respuesta de ejemplo
    Based on your budget, I recommend the **Bailian Zephyr Z9**. This phone is priced between 2499-2799 yuan, which fits your budget. It features a lightweight 6.4-inch 1080 x 2340 pixel screen design, paired with 128GB storage and 6GB RAM, suitable for daily use. Additionally, it has a 4000mAh battery and a lens that supports 30× digital zoom, which can meet your photography and battery life needs. If you're looking for a slim, portable phone with comprehensive features, the Bailian Zephyr Z9 would be a good choice.
    
  2. Recuperar documentos no estructurados especificados: Pase el ID de la base de conocimientos, el ID del documento, las etiquetas o los metadatos (pares clave-valor) en rag_options.
    El ID del documento, las etiquetas y los metadatos solo son efectivos para documentos no estructurados.
    • Cómo obtenerlos:
      • ID de documento (file_ids): Puede encontrarlo en la página de Datos de la Aplicación, o usar el ID devuelto por la API AddFile al importar documentos.
      • Etiquetas de documentos: Puede encontrar las etiquetas en la página de Datos de la Aplicación, u obtenerlas de la API DescribeFile.
      • Metadatos del documento: En la página de Base de Conocimientos, haga clic en View para ingresar a una base de conocimientos. Luego, haga clic en Metadata Information.
    • Puede especificar varios ID de documento, pero los documentos deben haber sido incluidos en los índices de conocimiento.
    • Al especificar ID de documentos, también debe especificar el ID de la base de conocimientos a la que pertenecen dichos documentos.
    • Solo se recuperarán los documentos especificados. Por ejemplo, una Aplicación de Agente asocia la base de conocimientos A, pero la llamada a la API especifica documentos de la base de conocimientos B. Entonces, no se recuperarán documentos de A, solo se recuperarán documentos de B. Bailian Phones Specifications.docx se utiliza en los siguientes ejemplos como una base de conocimientos no estructurada.
      • Python
      • Java
      • HTTP
      Solicitud de ejemplo
      import os
      # La versión del SDK de Dashscope debe ser 2.0.1 o posterior.
      import dashscope
      from dashscope.v2 import DashScopeError
      
      # La siguiente es la configuración de la región de Singapur. Sustituya {WorkspaceId} por el ID de su workspace. El valor de region varía según la región.
      client = dashscope.Client(
          # Si no utiliza una variable de entorno, configure su API key directamente (por ejemplo, api_key="sk-xxx"). No se recomienda codificar la API key en el código en entornos de producción, para reducir el riesgo de filtración de la API key.
          api_key=os.getenv("DASHSCOPE_API_KEY"),
          workspace="{WorkspaceId}",
          region="ap-southeast-1",
      )
      
      try:
          response = client.apps.completions.create(
              app_id='YOUR_APP_ID',  # Sustituya YOUR_APP_ID por el ID real de su aplicación
              prompt='Please recommend a mobile phone under 3000 yuan',
              rag_options={
                  "pipeline_ids": ["YOUR_PIPELINE_ID1", "YOUR_PIPELINE_ID2"],  # Sustituya por los ID reales de sus knowledge bases; separe varios ID con comas
                  "file_ids": ["YOUR_FILE_ID1", "YOUR_FILE_ID2"],  # Sustituya por los ID reales de sus documentos no estructurados; separe varios ID con comas
                  "metadata_filter": {  # Pares clave-valor de metadatos de documentos; separe varios pares con comas
                      "key1": "value1",
                      "key2": "value2"
                  },
                  "tags": ["tag1", "tag2"]  # Etiquetas de documentos; separe varias etiquetas con comas
              }
          )
          print('%s\n' % (response.text))
      except DashScopeError as e:
          print(f'request_id={e.request_id}')
          print(f'code={e.code}')
          print(f'message={e.message}')
          print(f'Consulte la documentación: https://www.alibabacloud.com/help/model-studio/developer-reference/error-code')
      
      Respuesta de ejemplo
      {
          "text": "Within a budget of under 3000 yuan, I recommend you consider the **Bailian Zephyr Z9**. This phone has the following features:
      
      - **Screen**: 6.4-inch 1080 x 2340 pixels, suitable for daily use and entertainment.
      - **Memory and storage**: 6GB RAM + 128GB storage space, which can meet most users' needs for smoothness and storage.
      - **Battery capacity**: 4000mAh, providing all-day usage guarantee.
      - **Camera function**: Equipped with a lens supporting 30× digital zoom, capable of capturing details from greater distances.
      - **Other features**: Lightweight and portable design, easy to carry.
      
      The reference price is between 2499 and 2799 yuan, which perfectly fits your budget requirements and offers good value for money. Hope these suggestions are helpful!",
          "finish_reason": "stop",
          "session_id": "10bdea3d1435406aad8750538b701bee",
          "thoughts": null,
          "doc_references": null
      }
      
  3. Recuperar datos especificados de documentos estructurados: Pase el ID de la base de conocimientos y los pares clave-valor de "encabezado de datos estructurados + valor" en rag_options. Obtener pares clave-valor de datos estructurados (structured_filter): En la página de Base de Conocimientos, haga clic en View para ingresar a una base de conocimientos. Luego, haga clic en View Index.
    • Python
    • Java
    • HTTP
    Solicitud de ejemplo
    import os
    # La versión del SDK de Dashscope debe ser 2.0.1 o posterior.
    import dashscope
    from dashscope.v2 import DashScopeError
    
    # La siguiente es la configuración de la región de Singapur. Sustituya {WorkspaceId} por el ID de su workspace. El valor de region varía según la región.
    client = dashscope.Client(
        # Si no utiliza una variable de entorno, configure su API key directamente (por ejemplo, api_key="sk-xxx"). No se recomienda codificar la API key en el código en entornos de producción, para reducir el riesgo de filtración de la API key.
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        workspace="{WorkspaceId}",
        region="ap-southeast-1",
    )
    
    try:
        response = client.apps.completions.create(
            app_id='YOUR_APP_ID',  # Sustituya YOUR_APP_ID por el ID real de su aplicación
            prompt='Please recommend a mobile phone under 3000 yuan',
            rag_options={
                "pipeline_ids": ["YOUR_PIPELINE_ID1", "YOUR_PIPELINE_ID2"],  # Sustituya por los ID reales de sus knowledge bases; separe varios ID con comas
                 "structured_filter": {  # Pares clave-valor de datos estructurados, correspondientes a los datos estructurados; separe varios pares con comas
                    "key1": "value1",
                    "key2": "value2"
                 }
            }
        )
        print('%s\n' % (response.text))
    except DashScopeError as e:
        print(f'request_id={e.request_id}')
        print(f'code={e.code}')
        print(f'message={e.message}')
        print(f'Consulte la documentación: https://www.alibabacloud.com/help/model-studio/developer-reference/error-code')
    
    Respuesta de ejemplo
    {
        "text": "I recommend the \"Bailian\" phone, which is priced at 2999 yuan, fitting your budget requirement. If you need to know more information, such as performance, appearance, etc., please let me know.",
        "finish_reason": "stop",
        "session_id": "80a3b868b5ce42c8a12f01dccf8651e2",
        "thoughts": null,
        "doc_references": null
    }
    
Ver información

Ver proceso de recuperación: Al realizar una llamada, agregue has_thoughts al código y establézcalo en True. El proceso de recuperación se devolverá en el campo thoughts de output.

Ver fuente de la respuesta: Active Mostrar Fuente en la Configuración de Recuperación de la Aplicación de Agente y publique la aplicación.
imagen

Referencia de API

Para obtener una lista completa de parámetros, consulte Referencia de API de flujo de trabajo y aplicación de agente heredada para DashScope.

Códigos de error

Si una llamada falla, consulte Códigos de error para solucionar problemas.

Referencias

FAQ

  1. Asegúrese de que los nombres de clase y paquete en sus declaraciones de importación sean correctos.
  2. Agregue la dependencia: Si usa Maven o Gradle, asegúrese de que la dependencia del SDK de Java de DashScope esté en su archivo pom.xml o build.gradle y sea la versión más reciente. Puede encontrar el número de la última versión del SDK de Java de DashScope en Maven.
<!-- https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dashscope-sdk-java</artifactId>
    <version>Enter the latest version, e.g., 2.16.4</version>
</dependency>
// https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java
implementation group: 'com.alibaba', name: 'dashscope-sdk-java', version: 'Enter the latest version, e.g., 2.16.4'
  1. Actualice el SDK: Una versión anterior del SDK de Java de DashScope podría carecer de las funciones o clases que necesita. Si su versión está desactualizada, actualícela modificando el número de versión en su archivo pom.xml o build.gradle.
<!-- https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dashscope-sdk-java</artifactId>
    <version>Replace this with the latest version number</version>
</dependency>
// https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java
implementation group: 'com.alibaba', name: 'dashscope-sdk-java', version: 'Replace this with the latest version number'
  1. Recargue el proyecto para aplicar los cambios.
  2. Vuelva a ejecutar el ejemplo de código. Si el problema persiste, consulte el foro de desarrolladores para buscar problemas similares y sus soluciones, o envíe un ticket.