|
|
@ -321,16 +321,27 @@ class ChatOpenAI(BaseChatModel):
|
|
|
|
inner_completion = ""
|
|
|
|
inner_completion = ""
|
|
|
|
role = "assistant"
|
|
|
|
role = "assistant"
|
|
|
|
params["stream"] = True
|
|
|
|
params["stream"] = True
|
|
|
|
|
|
|
|
function_call: Optional[dict] = None
|
|
|
|
for stream_resp in self.completion_with_retry(
|
|
|
|
for stream_resp in self.completion_with_retry(
|
|
|
|
messages=message_dicts, **params
|
|
|
|
messages=message_dicts, **params
|
|
|
|
):
|
|
|
|
):
|
|
|
|
role = stream_resp["choices"][0]["delta"].get("role", role)
|
|
|
|
role = stream_resp["choices"][0]["delta"].get("role", role)
|
|
|
|
token = stream_resp["choices"][0]["delta"].get("content", "")
|
|
|
|
token = stream_resp["choices"][0]["delta"].get("content") or ""
|
|
|
|
inner_completion += token
|
|
|
|
inner_completion += token
|
|
|
|
|
|
|
|
_function_call = stream_resp["choices"][0]["delta"].get("function_call")
|
|
|
|
|
|
|
|
if _function_call:
|
|
|
|
|
|
|
|
if function_call is None:
|
|
|
|
|
|
|
|
function_call = _function_call
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
function_call["arguments"] += _function_call["arguments"]
|
|
|
|
if run_manager:
|
|
|
|
if run_manager:
|
|
|
|
run_manager.on_llm_new_token(token)
|
|
|
|
run_manager.on_llm_new_token(token)
|
|
|
|
message = _convert_dict_to_message(
|
|
|
|
message = _convert_dict_to_message(
|
|
|
|
{"content": inner_completion, "role": role}
|
|
|
|
{
|
|
|
|
|
|
|
|
"content": inner_completion,
|
|
|
|
|
|
|
|
"role": role,
|
|
|
|
|
|
|
|
"function_call": function_call,
|
|
|
|
|
|
|
|
}
|
|
|
|
)
|
|
|
|
)
|
|
|
|
return ChatResult(generations=[ChatGeneration(message=message)])
|
|
|
|
return ChatResult(generations=[ChatGeneration(message=message)])
|
|
|
|
response = self.completion_with_retry(messages=message_dicts, **params)
|
|
|
|
response = self.completion_with_retry(messages=message_dicts, **params)
|
|
|
|