All Products
Search
Document Center

Intelligent Media Services:Antarmuka standar LLM

Last Updated:Jun 23, 2026

Hubungkan model bahasa besar (LLM) kustom Anda ke alur kerja real-time menggunakan protokol standar.

Antarmuka standar untuk LLM yang dikembangkan sendiri (spesifikasi OpenAI)

Jika antarmuka LLM Anda mengikuti standar OpenAI, Anda dapat mengintegrasikan layanan LLM kustom tersebut ke dalam alur kerja dengan menggunakan konfigurasi OpenAI. Hanya permintaan streaming yang didukung.

  1. Pada node LLM, pilih Self-developed access (OpenAI specification) dan konfigurasikan parameter berikut:

Name

Type

Required

Description

Example value

ModelId

String

Yes

Nama model. Sesuai dengan bidang 'model' OpenAI.

abc

API-KEY

String

Yes

Kunci API untuk otentikasi. Sesuai dengan bidang 'api_key' OpenAI.

AUJH-pfnTNMPBm6iWXcJAcWsrscb5KYaLitQhHBLKrI

Target model HTTPS address

String

Yes

URL layanan target. Sesuai dengan bidang 'base_url' OpenAI.

Catatan

Sesuai dengan spesifikasi OpenAI, Alibaba Cloud secara otomatis menambahkan /chat/completions ke base_url. Pastikan path Anda sesuai dengan format ini.

http://www.abc.com

  1. Pada waktu proses, alur kerja menyusun data dalam format OpenAI dan mengirim permintaan POST ke titik akhir model yang telah Anda konfigurasi. Parameter inputnya adalah sebagai berikut:

Name

Type

Required

Description

Example value

messages

Array

Yes

Riwayat percakapan. Maksimal 20 catatan disimpan. Entri awal dalam array merepresentasikan pesan yang lebih lama.

Catatan

Sistem secara otomatis menggabungkan input pengguna saat ini dengan riwayat percakapan dan mengirimkannya ke 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

Nama model.

abc

stream

Boolean

Yes

Apakah respons akan di-stream. Hanya streaming yang didukung.

True

extendData

Object

Yes

Informasi tambahan.

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

  • instanceId

String

Yes

ID instans.

68e00b6640e*****3e943332fee7

  • channelId

String

Yes

ID channel.

123

  • sentenceId

Int

Yes

ID pasangan tanya-jawab.

Catatan

Untuk pertanyaan pengguna yang sama, respons agen menggunakan ID yang sama.

3

  • callerNumber

String

No

Nomor pemanggil dalam panggilan telepon.

13800000001

  • calleeNumber

String

No

Nomor yang dipanggil dalam panggilan telepon.

13800000002

  • userData

String

No

Data bisnis yang diteruskan dalam bidang UserData saat memulai instans.

{"aaaa":"bbbb"}

Server LLM kustom (spesifikasi 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():
    # Periksa kunci API
    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}")

    # Cetak parameter kueri
    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)  # Simulasikan waktu pemrosesan

    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)