Fix: duplicate output by async_chat_streamly
This commit is contained in:
parent
28bc87c5e2
commit
ca7a0fd5cb
2 changed files with 12 additions and 19 deletions
|
|
@ -219,31 +219,26 @@ def chunk(filename, binary=None, from_page=0, to_page=100000,
|
|||
)
|
||||
|
||||
def _normalize_section(section):
|
||||
# Pad/normalize to (txt, layout, positions)
|
||||
if not isinstance(section, (list, tuple)):
|
||||
section = (section, "", [])
|
||||
elif len(section) == 1:
|
||||
# pad section to length 3: (txt, sec_id, poss)
|
||||
if len(section) == 1:
|
||||
section = (section[0], "", [])
|
||||
elif len(section) == 2:
|
||||
section = (section[0], "", section[1])
|
||||
else:
|
||||
section = (section[0], section[1], section[2])
|
||||
elif len(section) != 3:
|
||||
raise ValueError(f"Unexpected section length: {len(section)} (value={section!r})")
|
||||
|
||||
txt, layoutno, poss = section
|
||||
if isinstance(poss, str):
|
||||
poss = pdf_parser.extract_positions(poss)
|
||||
if poss:
|
||||
first = poss[0] # tuple: ([pn], x1, x2, y1, y2)
|
||||
pn = first[0]
|
||||
if isinstance(pn, list) and pn:
|
||||
pn = pn[0] # [pn] -> pn
|
||||
first = poss[0] # tuple: ([pn], x1, x2, y1, y2)
|
||||
pn = first[0]
|
||||
|
||||
if isinstance(pn, list):
|
||||
pn = pn[0] # [pn] -> pn
|
||||
poss[0] = (pn, *first[1:])
|
||||
if not poss:
|
||||
poss = []
|
||||
|
||||
return (txt, layoutno, poss)
|
||||
|
||||
|
||||
sections = [_normalize_section(sec) for sec in sections]
|
||||
|
||||
if not sections and not tbls:
|
||||
|
|
@ -350,4 +345,4 @@ if __name__ == "__main__":
|
|||
pass
|
||||
|
||||
|
||||
chunk(sys.argv[1], callback=dummy)
|
||||
chunk(sys.argv[1], callback=dummy)
|
||||
|
|
@ -146,7 +146,6 @@ class Base(ABC):
|
|||
request_kwargs["stop"] = stop
|
||||
|
||||
response = await self.async_client.chat.completions.create(**request_kwargs)
|
||||
|
||||
async for resp in response:
|
||||
if not resp.choices:
|
||||
continue
|
||||
|
|
@ -161,7 +160,6 @@ class Base(ABC):
|
|||
else:
|
||||
reasoning_start = False
|
||||
ans = resp.choices[0].delta.content
|
||||
|
||||
tol = total_token_count_from_response(resp)
|
||||
if not tol:
|
||||
tol = num_tokens_from_string(resp.choices[0].delta.content)
|
||||
|
|
@ -187,12 +185,12 @@ class Base(ABC):
|
|||
ans = delta_ans
|
||||
total_tokens += tol
|
||||
yield ans
|
||||
yield total_tokens
|
||||
return
|
||||
except Exception as e:
|
||||
e = await self._exceptions_async(e, attempt)
|
||||
if e:
|
||||
yield e
|
||||
yield total_tokens
|
||||
return
|
||||
|
||||
yield total_tokens
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue