Skip to content

Commit ba24360

Browse files
committed
fix: add asynchronous streaming support in base_chat_open_ai.py
1 parent 701375a commit ba24360

1 file changed

Lines changed: 9 additions & 2 deletions

File tree

apps/models_provider/impl/base_chat_open_ai.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# coding=utf-8
22
import base64
33
from concurrent.futures import ThreadPoolExecutor
4-
from typing import Dict, Optional, Any, Iterator, cast, Union, Sequence, Callable, Mapping
4+
from typing import Dict, Optional, Any, Iterator, cast, Union, Sequence, Callable, Mapping, AsyncIterator
55

66
from langchain_core.language_models import LanguageModelInput
77
from langchain_core.messages import BaseMessage, get_buffer_string, BaseMessageChunk, HumanMessageChunk, AIMessageChunk, \
@@ -102,7 +102,7 @@ def get_num_tokens_from_messages(
102102
with ThreadPoolExecutor(max_workers=1) as executor:
103103
future = executor.submit(super().get_num_tokens_from_messages, messages, tools)
104104
try:
105-
response = future.result()
105+
response = future.result(timeout=timeout)
106106
maxkb_logger.info("请求成功(未超时)")
107107
return response
108108
except Exception as e:
@@ -131,6 +131,13 @@ def _stream(self, *args: Any, **kwargs: Any) -> Iterator[ChatGenerationChunk]:
131131
self.usage_metadata = chunk.message.usage_metadata
132132
yield chunk
133133

134+
async def _astream(self, *args: Any, **kwargs: Any) -> AsyncIterator[ChatGenerationChunk]:
135+
kwargs['stream_usage'] = True
136+
async for chunk in super()._astream(*args, **kwargs):
137+
if chunk.message.usage_metadata is not None:
138+
self.usage_metadata = chunk.message.usage_metadata
139+
yield chunk
140+
134141
def _convert_chunk_to_generation_chunk(
135142
self,
136143
chunk: dict,

0 commit comments

Comments
 (0)