Todos os produtos
Search
Central de documentação

Intelligent Media Services:Interface padrão de LLM

Última atualização: Jun 28, 2026

Conecte seus modelos de linguagem grandes (LLMs) personalizados a fluxos de trabalho em tempo real por meio de um protocolo padrão.

Interface padrão para LLMs desenvolvidos internamente (especificação OpenAI)

Se a interface do seu LLM seguir o padrão OpenAI, integre seu serviço de LLM personalizado a um fluxo de trabalho com a configuração OpenAI. O sistema aceita apenas requisições em streaming.

  1. No nó LLM, selecione Self-developed access (OpenAI specification) e configure os parâmetros abaixo:

Name

Type

Required

Description

Example value

ModelId

String

Yes

Nome do modelo. Equivale ao campo 'model' da OpenAI.

abc

API-KEY

String

Yes

Chave de API para autenticação. Equivale ao campo 'api_key' da OpenAI.

AUJH-pfnTNMPBm6iWXcJAcWsrscb5KYaLitQhHBLKrI

Target model HTTPS address

String

Yes

URL do serviço de destino. Equivale ao campo 'base_url' da OpenAI.

Nota

Para cumprir a especificação OpenAI, a Alibaba Cloud anexa automaticamente /chat/completions ao base_url. Verifique se o caminho segue esse formato.

http://www.abc.com

  1. Na execução, o fluxo de trabalho monta os dados no formato OpenAI e envia uma requisição POST ao endpoint do modelo configurado. Confira os parâmetros de entrada:

Name

Type

Required

Description

Example value

messages

Array

Yes

Histórico da conversa. Armazena até 20 registros; as primeiras posições do array contêm as mensagens mais antigas.

Nota

O sistema combina automaticamente a entrada atual do usuário com o histórico da conversa e envia o resultado ao LLM.

[{'role': 'user', 'content': 'What is the weather like today?'},{'role': 'assistant', 'content': 'The weather is sunny today.'},{'role': 'user', 'content': 'What about the weather tomorrow?'}]

model

String

Yes

Nome do modelo.

abc

stream

Boolean

Yes

Indica se a resposta usa streaming. Apenas o modo streaming é compatível.

True

extendData

Object

Yes

Informações adicionais.

{'instanceId':'68e00b6640e*3e943332fee7','channelId':'123','sentenceId':'3','userData':'{"aaaa":"bbbb"}'}

  • instanceId

String

Yes

ID da instância.

68e00b6640e*3e943332fee7

  • channelId

String

Yes

ID do canal.

123

  • sentenceId

Int

Yes

ID do par de perguntas e respostas.

Nota

Para uma mesma pergunta do usuário, a resposta do agente usa sempre o mesmo ID.

3

  • callerNumber

String

No

Número de origem da chamada telefônica.

13800000001

  • calleeNumber

String

No

Número de destino da chamada telefônica.

13800000002

  • userData

String

No

Dados de negócios enviados no campo UserData durante a inicialização da instância.

{"aaaa":"bbbb"}

Servidor de LLM personalizado (especificação OpenAI)

Python

import json
import time
from loguru import logger
from flask import Flask, request, jsonify, Response

app = Flask(__name__)

API_KEY = "YOURAPIKEY"

@app.route('/v1/chat/completions', methods=['POST'])
def chat_completion():
    # Check the API key
    auth_header = request.headers.get('Authorization')
    if not auth_header or auth_header.split()[1] != API_KEY:
        return jsonify({"error": "Unauthorized"}), 401

    data = request.json
    logger.info(f"data is {data}")
    task_id = request.args.get('task_id')
    room_id = request.args.get('room_id')
    for header, value in request.headers.items():
        logger.info(f"{header}: {value}")

    # Print query parameters
    logger.info("\nQuery Parameters:")
    for key, value in request.args.items():
        logger.info(f"{key}: {value}")

    logger.info(f"task_id: {task_id}, room_id: {room_id}")
    stream = data.get('stream', False)

    if stream:
        return Response(generate_stream_response(data), content_type='text/event-stream')
    else:
        return jsonify(generate_response(data))

def generate_response(data):
    response = "This is a mock AI assistant response. In a real application, call a real AI model here."

    return {
        "id": "chatcmpl-123",
        "object": "chat.completion",
        "created": int(time.time()),
        "model": data['model'],
        "choices": [{
            "index": 0,
            "message": {
                "role": "assistant",
                "content": response
            },
            "finish_reason": "stop"
        }],
        "usage": {
            "prompt_tokens": sum(len(m['content']) for m in data['messages']),
            "completion_tokens": len(response),
            "total_tokens": sum(len(m['content']) for m in data['messages']) + len(response)
        }
    }

def generate_stream_response(data):
    response = "This is a mock AI assistant streaming response. In a real application, call a real AI model here."
    words = list(response)
    for i, word in enumerate(words):
        chunk = {
            "id": "chatcmpl-123",
            "object": "chat.completion.chunk",
            "created": int(time.time()),
            "model": data['model'],
            "choices": [{
                "index": 0,
                "delta": {
                    "content": word, 
                    "tool_calls": [  
                        {
                            "id": "call_abc123",  
                            "type": "function",
                            "function": {
                                "name": "hangup", 
                                "arguments": "\{\}"  
                            }
                        }
                    ]
                },
                "finish_reason": None if i < len(words) - 1 else "stop"
            }]
        }
        logger.info(chunk)
        yield f"data: {json.dumps(chunk)}\n\n"
        time.sleep(0.1)  # Simulate processing time

    yield "data: [DONE]\n\n"

if __name__ == '__main__':
    logger.info(f"Server is running with API_KEY: {API_KEY}")
    app.run(port=8083, debug=True)