File size: 1,538 Bytes
217acfe
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
from openai import OpenAI
from .chat_messages import ChatMessages

doubao_model_config = {
    "doubao-lite-32k":{
        "Pricing": (0.0003, 0.0006),
        "currency_symbol": '¥',
    },
    "doubao-lite-128k":{
        "Pricing": (0.0008, 0.001),
        "currency_symbol": '¥',
    },
    "doubao-pro-32k":{
        "Pricing": (0.0008, 0.002),
        "currency_symbol": '¥',
    },
    "doubao-pro-128k":{
        "Pricing": (0.005, 0.009),
        "currency_symbol": '¥',
    },
}

def stream_chat_with_doubao(messages, model='doubao-lite-32k', endpoint_id=None, response_json=False, api_key=None, max_tokens=32000):
    if api_key is None:
        raise Exception('未提供有效的 api_key!')
    if endpoint_id is None:
        raise Exception('未提供有效的 endpoint_id!')

    client = OpenAI(
        api_key=api_key,
        base_url="https://ark.cn-beijing.volces.com/api/v3",
    )

    stream = client.chat.completions.create(
        model=endpoint_id,
        messages=messages,
        stream=True,
        response_format={ "type": "json_object" } if response_json else None
    )

    messages.append({'role': 'assistant', 'content': ''})
    content = ''
    for chunk in stream:
        if chunk.choices:
            delta_content = chunk.choices[0].delta.content or ''
            content += delta_content
            messages[-1]['content'] = content
            yield messages
    
    return messages

if __name__ == '__main__':
    pass