mirror of
https://github.com/hwchase17/langchain.git
synced 2025-05-20 14:31:44 +00:00
support streaming for functions (#6115)
This commit is contained in:
parent
11ab0be11a
commit
e74733ab9e
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user