| 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 | |