全部产品
Search
文档中心

Intelligent Media Services:Antarmuka LLM Standar

更新时间:Dec 07, 2025

Alur kerja Real-time memungkinkan Anda menghubungkan model bahasa besar (LLM) kustom menggunakan protokol standar.

Antarmuka standar LLM hasil pengembangan sendiri (spesifikasi OpenAI)

Jika API LLM Anda mematuhi spesifikasi OpenAI, Anda dapat mengintegrasikan layanan LLM kustom ke dalam alur kerja menggunakan konfigurasi OpenAI standar. Saat ini, hanya permintaan berbasis stream ke layanan yang kompatibel dengan OpenAI yang didukung.

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

Nama

Tipe

Wajib

Deskripsi

Example value

ModelId

String

Ya

Bidang model standar OpenAI. Menentukan nama model.

abc

API-KEY

String

Ya

Bidang api_key standar OpenAI. Menyediakan informasi autentikasi API.

AUJH-pfnTNMPBm6iWXcJAcWsrscb5KYaLitQhHBLKrI

Alamat HTTPS model target

String

Ya

Bidang base_url standar OpenAI. Menentukan alamat permintaan layanan target.

Catatan

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

http://www.abc.com

  1. Saat alur kerja real-time dijalankan, sistem menyusun data dalam format standar OpenAI, lalu mengirim permintaan POST ke alamat HTTPS model kustom yang telah Anda konfigurasi untuk mendapatkan hasilnya. Parameter input adalah sebagai berikut:

Nama

Tipe

Wajib

Deskripsi

Example value

messages

Array

Ya

Konteks percakapan historis. Maksimal 20 catatan konteks disimpan. Catatan yang muncul lebih awal dalam array merepresentasikan pertanyaan atau jawaban sebelumnya.

Catatan

Sistem secara otomatis menggabungkan input pengguna saat ini dengan riwayat percakapan dan mengirimkannya ke model bahasa besar.

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

model

String

Ya

Nama model.

abc

stream

Boolean

Ya

Menentukan apakah akan menggunakan mode stream. Saat ini, hanya stream yang didukung.

True

extendData

Object

Ya

Informasi tambahan.

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

  • instanceId

String

Ya

ID instance.

68e00b6640e*****3e943332fee7

  • channelId

String

Ya

ID saluran.

123

  • sentenceId

Int

Ya

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

Tidak

Data dari bidang bisnis UserData yang Anda kirimkan 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 an analog 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 an analog AI assistant stream 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)