defcount_up(n):for i inrange(n):yield i
g = count_up(3)next(g)# 0next(g)# 1for v in g:print(v)# 2
# 안 좋음: 1억 개 메모리 점유nums =[i*i for i inrange(10**8)]# 좋음: 1개씩 생성nums =(i*i for i inrange(10**8))# generator expression
from openai import OpenAI
client = OpenAI()defstream_answer(prompt:str): resp = client.chat.completions.create( model="gpt-4o-mini", messages=[{"role":"user","content": prompt}], stream=True,)for chunk in resp: delta = chunk.choices[0].delta.content
if delta:yield delta
for token in stream_answer("AI Agent란?"):print(token, end="", flush=True)
asyncdefastream(prompt):asyncfor chunk inawait client.chat.completions.create( model="gpt-4o-mini", messages=[{"role":"user","content": prompt}], stream=True,): delta = chunk.choices[0].delta.content
if delta:yield delta
asyncfor tok in astream("Hi"):print(tok, end="")
defchain(*iterables):for it in iterables:yieldfrom it # for v in it: yield v 와 동일
defload_chunks(paths):for p in paths:withopen(p)as f: text = f.read()for chunk in split(text, size=500, overlap=50):yield{"source": p,"text": chunk}for batch in batched(load_chunks(paths),100): vectordb.add_texts([c["text"]for c in batch], metadatas=[{"source": c["source"]}for c in batch])