|
|
|
|
@ -3,6 +3,7 @@ from __future__ import annotations
|
|
|
|
|
|
|
|
|
|
import json
|
|
|
|
|
import logging
|
|
|
|
|
from json import JSONDecodeError
|
|
|
|
|
from typing import (
|
|
|
|
|
Any,
|
|
|
|
|
Dict,
|
|
|
|
|
@ -223,11 +224,24 @@ class Wenxin(LLM):
|
|
|
|
|
for token in self._client.post(request).iter_lines():
|
|
|
|
|
if token:
|
|
|
|
|
token = token.decode("utf-8")
|
|
|
|
|
completion = json.loads(token[5:])
|
|
|
|
|
|
|
|
|
|
yield GenerationChunk(text=completion['result'])
|
|
|
|
|
if run_manager:
|
|
|
|
|
run_manager.on_llm_new_token(completion['result'])
|
|
|
|
|
|
|
|
|
|
if completion['is_end']:
|
|
|
|
|
break
|
|
|
|
|
if token.startswith('data:'):
|
|
|
|
|
completion = json.loads(token[5:])
|
|
|
|
|
|
|
|
|
|
yield GenerationChunk(text=completion['result'])
|
|
|
|
|
if run_manager:
|
|
|
|
|
run_manager.on_llm_new_token(completion['result'])
|
|
|
|
|
|
|
|
|
|
if completion['is_end']:
|
|
|
|
|
break
|
|
|
|
|
else:
|
|
|
|
|
try:
|
|
|
|
|
json_response = json.loads(token)
|
|
|
|
|
except JSONDecodeError:
|
|
|
|
|
raise ValueError(f"Wenxin Response Error {token}")
|
|
|
|
|
|
|
|
|
|
raise ValueError(
|
|
|
|
|
f"Wenxin API {json_response['error_code']}"
|
|
|
|
|
f" error: {json_response['error_msg']}, "
|
|
|
|
|
f"please confirm if the model you have chosen is already paid for."
|
|
|
|
|
)
|
|
|
|
|
|