āđāļĄāđāļāļĨāđāļĨāļ°āđāļāļĨāļāļāļāļĢāđāļĄ AI
āļāļēāļĢāđāļĢāļĩāļĒāļ API LLM āđāļāļ Asynchronous āđāļ Python: āļāļđāđāļĄāļ·āļāļāļĩāđāļāļĢāļāļāļāļĨāļļāļĄ
āđāļāļāļēāļāļ°āļāļąāļāļāļąāļāļāļēāđāļĨāļ°āļāļąāļāļ§āļīāļāļĒāļēāļĻāļēāļŠāļāļĢāđāļāđāļāļĄāļđāļĨ āđāļĢāļēāļĄāļąāļāļāļāļ§āđāļēāļāļąāļ§āđāļāļāļāđāļāļāļāļēāļĢāđāļāđāļāļāļāļāļąāļāđāļĄāđāļāļĨāļāļĩāđāļāļĢāļāļāļĨāļąāļāđāļŦāļĨāđāļēāļāļĩāđāļāđāļēāļ API āļāļĒāđāļēāļāđāļĢāļāđāļāļēāļĄ āđāļĄāļ·āđāļāđāļāļāļāļĨāļīāđāļāļāļąāļāļāļāļāđāļĢāļēāļĄāļĩāļāļ§āļēāļĄāļāļąāļāļāđāļāļāđāļĨāļ°āļāļāļēāļāđāļŦāļāđāļāļķāđāļ āļāļ§āļēāļĄāļāđāļāļāļāļēāļĢāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāđāļāđāļāļāļ API āļāļĩāđāļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāđāļĨāļ°āļāļģāļāļēāļāđāļāđāļāļĩāļāļķāļāļāļĨāļēāļĒāđāļāđāļāļŠāļīāđāļāļāļģāđāļāđāļ āļāļĩāđāļāļ·āļāļāļĩāđāļāļĩāđāļāļēāļĢāđāļāļĩāļĒāļāđāļāļĢāđāļāļĢāļĄāđāļāļ Asynchronous āļŠāđāļāļāđāļŠāļ āđāļāļĒāļāļģāđāļŦāđāđāļĢāļēāļŠāļēāļĄāļēāļĢāļāđāļāļīāđāļĄāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļŠāļđāļāļŠāļļāļāđāļĨāļ°āļĨāļāļāļ§āļēāļĄāļĨāđāļēāļāđāļēāđāļĄāļ·āđāļāļāļģāļāļēāļāļāļąāļ API LLM
āđāļāļāļđāđāļĄāļ·āļāļāļĩāđāļāļĢāļāļāļāļĨāļļāļĄāļāļĩāđ āđāļĢāļēāļāļ°āļŠāļģāļĢāļ§āļāđāļĨāļāļāļāļāļāļēāļĢāđāļĢāļĩāļĒāļ API LLM āđāļāļ Asynchronous āđāļ Python āđāļĢāļēāļāļ°āļāļĢāļāļāļāļĨāļļāļĄāļāļļāļāļāļĒāđāļēāļāļāļąāđāļāđāļāđāļāļ·āđāļāļāļēāļāļāļāļāļāļēāļĢāđāļāļĩāļĒāļāđāļāļĢāđāļāļĢāļĄāđāļāļ Asynchronous āđāļāļāļāļāļķāļāđāļāļāļāļīāļāļāļąāđāļāļŠāļđāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļąāļāļāļēāļĢ ėāđāļāđāļāļĨāļ§āđāļāļĩāđāļāļąāļāļāđāļāļ āđāļĄāļ·āđāļāļāļķāļāļāļļāļāļŠāļīāđāļāļŠāļļāļāļāļāļāļāļāļāļ§āļēāļĄāļāļĩāđ āļāļļāļāļāļ°āļĄāļĩāļāļ§āļēāļĄāđāļāđāļēāđāļāļāļĩāđāļāļĩāđāļāļĩāđāļĒāļ§āļāļąāļāļ§āļīāļāļĩāļāļēāļĢāđāļāđāļāļēāļĢāđāļāļĩāļĒāļāđāļāļĢāđāļāļĢāļĄāđāļāļ Asynchronous āđāļāļ·āđāļāđāļāļīāđāļĄāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļāļāļāđāļāļāļāļĨāļīāđāļāļāļąāļāļāļĩāđāđāļāđ LLM
āļāđāļāļāļāļĩāđāđāļĢāļēāļāļ°āđāļāļēāļ°āļĨāļķāļāļāļķāļāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļāļāļāļāļēāļĢāđāļĢāļĩāļĒāļ API LLM āđāļāļ Asynchronous āļĄāļēāļāļģāļāļ§āļēāļĄāđāļāđāļēāđāļāļāļ·āđāļāļāļēāļāļāļāļāļāļēāļĢāđāļāļĩāļĒāļāđāļāļĢāđāļāļĢāļĄāđāļāļ Asynchronous āļāļąāļāļāđāļāļ
āļāļēāļĢāđāļāļĩāļĒāļāđāļāļĢāđāļāļĢāļĄāđāļāļ Asynchronous āļāđāļ§āļĒāđāļŦāđāļŠāļēāļĄāļēāļĢāļāļāļģāđāļāļīāļāļāļēāļĢāļŦāļĨāļēāļĒāļāļĒāđāļēāļāļāļĢāđāļāļĄāļāļąāļāđāļāļĒāđāļĄāđāļāļĨāđāļāļāđāļāļĢāļāļŦāļĨāļąāļāļāļāļāļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢ āđāļ Python āļŠāļīāđāļāļāļĩāđāļŠāļēāļĄāļēāļĢāļāļāļģāđāļāđāđāļāļĒāđāļāđāđāļĄāļāļđāļĨ asyncio āļāļķāđāļāđāļŦāđāđāļāļĢāļĄāđāļ§āļīāļĢāđāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāđāļāļĩāļĒāļāđāļāđāļāļāļĩāđāđāļāđāđāļāđāļĢāļāļĩāļ āļāļēāļĢāļ§āļāļāđāļģāđāļŦāļāļļāļāļēāļĢāļāđ āđāļĨāļ°āļāļīāļ§āđāļāļāļĢāđ
āđāļāļ§āļāļīāļāļŦāļĨāļąāļ:
- āđāļāđāļĢāļāļĩāļ: āļāļąāļāļāđāļāļąāļāļāļĩāđāļāļđāļāļāļģāļŦāļāļāļāđāļ§āļĒ async def āļāļĩāđāļŠāļēāļĄāļēāļĢāļāļŦāļĒāļļāļāđāļĨāļ°āđāļĢāļīāđāļĄāļāđāļāđāļŦāļĄāđāđāļāđ
- āļāļēāļĢāļ§āļāļāđāļģāđāļŦāļāļļāļāļēāļĢāļāđ: āļāļĨāđāļāļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢāļāļĩāđāļŠāļģāļāļąāļāļāļĩāđāļāļąāļāļāļēāļĢāđāļĨāļ°āļāļģāđāļāļīāļāļāļēāļĢāļāļēāļāđāļāļ Asynchronous
- āļ§āļąāļāļāļļAwaitable: āļ§āļąāļāļāļļāļāļĩāđāļŠāļēāļĄāļēāļĢāļāđāļāđāļāļąāļāļāļģāļŠāļąāđāļ await (āđāļāđāļĢāļāļĩāļ āļāļēāļĢāļāļģāļāļēāļ āļāļīāļ§āđāļāļāļĢāđ)
āļāđāļāđāļāļāļĩāđāđāļāđāļāļāļąāļ§āļāļĒāđāļēāļāļāđāļēāļĒāđ āđāļāļ·āđāļāļāļāļīāļāļēāļĒāđāļāļ§āļāļīāļāđāļŦāļĨāđāļēāļāļĩāđ:
import asyncio <p>async def greet(name): await asyncio.sleep(1) # āļāļģāļĨāļāļāļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢ I/O</p> <p>async def main(): await asyncio.gather( greet("Alice"), greet("Bob"), greet("Charlie") )</p> asyncio.run(main())
āđāļāļāļąāļ§āļāļĒāđāļēāļāļāļĩāđ āđāļĢāļēāļĄāļĩāļāļąāļāļāđāļāļąāļāđāļāļ Asynchronous āļāļ·āđāļ greet āļāļĩāđāļāļģāļĨāļāļāļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢ I/O āļāđāļ§āļĒ asyncio.sleep() āļāļąāļāļāđāļāļąāļ main āđāļāđ asyncio.gather() āđāļāļ·āđāļāļāļģāđāļāļīāļāļāļēāļĢāļāļēāļĢ ÐŋÐūзÐīÐūŅÐūÐēÐ°Ð―ÐļŅāļŦāļĨāļēāļĒāļāļĢāļąāđāļāļāļĢāđāļāļĄāļāļąāļ āđāļĄāđāļ§āđāļēāļāļ°āļĄāļĩāļāļēāļĢāļŦāļāđāļ§āļāđāļ§āļĨāļē 1 āļ§āļīāļāļēāļāļĩ āđāļāđāļāļēāļĢ ÐŋÐūзÐīÐūŅÐūÐēÐ°Ð―ÐļŅāļāļąāđāļāļŠāļēāļĄāļāļĢāļąāđāļāļāļ°āđāļŠāļĢāđāļāļŠāļīāđāļāđāļāđāļ§āļĨāļēāļāļĢāļ°āļĄāļēāļ 1 āļ§āļīāļāļēāļāļĩ āļāļķāđāļāđāļŠāļāļāļāļķāļāļāļĨāļąāļāļāļāļāļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢāđāļāļ Asynchronous
āļāļ§āļēāļĄāļāļģāđāļāđāļāļāļāļ Asynchronous āđāļāļāļēāļĢāđāļĢāļĩāļĒāļ API LLM
āđāļĄāļ·āđāļāļāļģāļāļēāļāļāļąāļ API LLM āđāļĢāļēāļĄāļąāļāļāļāļŠāļāļēāļāļāļēāļĢāļāđāļāļĩāđāļāđāļāļāļāļģāļāļēāļĢāđāļĢāļĩāļĒāļ API āļŦāļĨāļēāļĒāļāļĢāļąāđāļ āđāļĄāđāļ§āđāļēāļāļ°āđāļāđāļāđāļāļāļĨāļģāļāļąāļāļŦāļĢāļ·āļāđāļāļāļāļāļēāļ āļāļēāļĢāđāļāļĩāļĒāļāđāļāđāļāđāļāļāļŠynchronous āļŠāļēāļĄāļēāļĢāļāļāļģāđāļāļŠāļđāđāļāļąāļāļŦāļēāļāļēāļĢāļāļģāļāļēāļāļāļĩāđāļāđāļēāđāļāđ āđāļāļĒāđāļāļāļēāļ°āļāļĒāđāļēāļāļĒāļīāđāļāđāļĄāļ·āđāļāļāļģāļāļēāļāļāļąāļāļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢāļĨāđāļēāļāđāļēāļāļĩāđāļŠāļđāļ āđāļāđāļ āļāļēāļĢāļĢāđāļāļāļāļāđāļāļĢāļ·āļāļāđāļēāļĒāđāļāļĒāļąāļāļāļĢāļīāļāļēāļĢ LLM
āļĨāļāļāļāļīāļāļēāļĢāļāļēāļŠāļāļēāļāļāļēāļĢāļāđāļāļĩāđāđāļĢāļēāļāđāļāļāļŠāļĢāđāļēāļāļŠāļĢāļļāļāļŠāļģāļŦāļĢāļąāļāļāļāļāļ§āļēāļĄ 100 āđāļĢāļ·āđāļāļāđāļāļĒāđāļāđ API LLM āļāđāļ§āļĒāļ§āļīāļāļĩāļāļēāļĢāđāļāļāļŠynchronous āļāļēāļĢāđāļĢāļĩāļĒāļ API āđāļāđāļĨāļ°āļāļĢāļąāđāļāļāļ°āļāļđāļāļāļĨāđāļāļāļāļāļāļ§āđāļēāļāļ°āđāļāđāļĢāļąāļāļāļēāļĢāļāļāļāļāļĨāļąāļ āļāļķāđāļāļāļēāļāđāļāđāđāļ§āļĨāļēāļŦāļĨāļēāļĒāļāļēāļāļĩāđāļāļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢããđãĶ āļāļēāļĢāđāļāđāļ§āļīāļāļĩāļāļēāļĢāđāļāļ Asynchronous āļāđāļ§āļĒāđāļŦāđāđāļĢāļēāļŠāļēāļĄāļēāļĢāļāđāļĢāļīāđāļĄāļāļēāļĢāđāļĢāļĩāļĒāļ API āļŦāļĨāļēāļĒāļāļĢāļąāđāļāļāļĢāđāļāļĄāļāļąāļ āļāļķāđāļāļĨāļāđāļ§āļĨāļēāđāļāļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢāđāļāļĒāļĢāļ§āļĄāļĨāļāļāļĒāđāļēāļāļĄāļēāļ
āļāļēāļĢāļāļģāļŦāļāļāļāđāļēāļŠāļ āļēāļāđāļ§āļāļĨāđāļāļĄāļāļāļāļāļļāļ
āđāļāļ·āđāļāđāļĢāļīāđāļĄāļāđāļāļāļēāļĢāđāļĢāļĩāļĒāļ API LLM āđāļāļ Asynchronous āļāļļāļāļāļ°āļāđāļāļāļāļģāļŦāļāļāļāđāļēāļŠāļ āļēāļāđāļ§āļāļĨāđāļāļĄ Python āļāļāļāļāļļāļāļāđāļ§āļĒāđāļĨāļāļĢāļēāļĢāļĩāļāļĩāđāļāļģāđāļāđāļ āļāđāļāđāļāļāļĩāđāļāļ·āļāļŠāļīāđāļāļāļĩāđāļāļļāļāļāđāļāļāļāļēāļĢ:
- Python 3.7 āļŦāļĢāļ·āļāļŠāļđāļāļāļ§āđāļē (āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļŠāļāļąāļāļŠāļāļļāļ asyncio āđāļāļāđāļāļāļĩāļ)
- aiohttp: āđāļĨāļāļĢāļēāļĢāļĩāđāļāļĨāđāļāđāļāļāđ HTTP āđāļāļ Asynchronous
- openai: āđāļĨāļāļĢāļēāļĢāļĩāđāļāļĨāđāļāđāļāļāđ Python āļāļāļ OpenAI (āļŦāļēāļāļāļļāļāđāļāđāđāļĄāđāļāļĨ GPT āļāļāļ OpenAI)
- langchain: āđāļāļĢāļĄāđāļ§āļīāļĢāđāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļŠāļĢāđāļēāļāđāļāļāļāļĨāļīāđāļāļāļąāļāļāđāļ§āļĒ LLM (āđāļĄāđāļāļģāđāļāđāļ āđāļāđāđāļāļ°āļāļģāļŠāļģāļŦāļĢāļąāļ ėāđāļāđāļāļĨāļ§āđāļāļĩāđāļāļąāļāļāđāļāļ)
āļāļļāļāļŠāļēāļĄāļēāļĢāļāļāļīāļāļāļąāđāļāļāļ§āļēāļĄāļāļķāđāļāļāļēāđāļŦāļĨāđāļēāļāļĩāđāđāļāļĒāđāļāđ pip:
<p>pip install aiohttp openai langchain <div class="relative flex flex-col rounded-lg">
āļāļēāļĢāđāļĢāļĩāļĒāļ API LLM āđāļāļ Asynchronous āļāļ·āđāļāļāļēāļāļāđāļ§āļĒ asyncio āđāļĨāļ° aiohttp
āļĄāļēāļāļģāļāļēāļĢāđāļĢāļĩāļĒāļ API LLM āđāļāļ Asynchronous āļāļĩāđāđāļĢāļĩāļĒāļāļāđāļēāļĒāđāļāļĒāđāļāđ aiohttp āļāļąāļ āđāļĢāļēāļāļ°āđāļāđ API GPT-3.5 āļāļāļ OpenAI āđāļāđāļāļāļąāļ§āļāļĒāđāļēāļ āđāļāđāđāļāļ§āļāļīāļāđāļŦāļĨāđāļēāļāļĩāđāļŠāļēāļĄāļēāļĢāļāđāļāđāļāļąāļ API LLM āļāļ·āđāļāđ āđāļāđ
import asyncio
import aiohttp
from openai import AsyncOpenAI
<p>async def generate_text(prompt, client):
response = await client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content</p>
<p>async def main():
prompts = [
"āļāļāļīāļāļēāļĒāļāļēāļĢāļāļģāļāļ§āļāđāļāļāļāļ§āļāļāļāļąāļĄāđāļāļāļģāļāļđāļāļāļĩāđāđāļĢāļĩāļĒāļāļāđāļēāļĒ.",
"āđāļāļĩāļĒāļāļŪāļ°āļāļīāļāļđāđāļāļĩāđāļĒāļ§āļāļąāļāļāļąāļāļāļēāļāļĢāļ°āļāļīāļĐāļāđ.",
"āļāļāļīāļāļēāļĒāļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļāļāļāļēāļĢ ŅÐūŅāļāļŠāļīāļāđāļāļāļīāļŠ."
]</p>
<p>async with AsyncOpenAI() as client:
tasks = [generate_text(prompt, client) for prompt in prompts]
results = await asyncio.gather(*tasks)</p>
<p>for prompt, result in zip(prompts, results):
print(f"āļāļģāļāļēāļĄ: {prompt}\nāļāļģāļāļāļ: {result}\n")</p>
asyncio.run(main())
āđāļāļāļąāļ§āļāļĒāđāļēāļāļāļĩāđ āđāļĢāļēāļĄāļĩāļāļąāļāļāđāļāļąāļāđāļāļ Asynchronous āļāļ·āđāļ generate_text āļāļĩāđāļāļģāļāļēāļĢāđāļĢāļĩāļĒāļ API LLM āđāļāļĒāđāļāđ AsyncOpenAI āļāļąāļāļāđāļāļąāļ main āļŠāļĢāđāļēāļāļāļēāļāļŠāļģāļŦāļĢāļąāļāļāļģāļāļēāļĄāļŦāļĨāļēāļĒāļāđāļāđāļĨāļ°āđāļāđ asyncio.gather() āđāļāļ·āđāļāļāļģāđāļāļīāļāļāļēāļĢāļāļĢāđāļāļĄāļāļąāļ
āđāļāļ§āļāļēāļāļāļĩāđāļāđāļ§āļĒāđāļŦāđāđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļŠāđāļāļāļģāļāļēāļĄāļŦāļĨāļēāļĒāļāđāļāđāļāļĒāļąāļ API LLM āđāļāđāļ§āļĨāļēāđāļāļĩāļĒāļ§āļāļąāļ āļāļķāđāļāļĨāļāđāļ§āļĨāļēāļāļąāđāļāļŦāļĄāļāļāļĩāđāļāđāļāļāđāļāđāđāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāļģāļāļēāļĄāļāļąāđāļāļŦāļĄāļ
āđāļāļāļāļīāļāļāļąāđāļāļŠāļđāļ: āļāļēāļĢāđāļāļāļāđāđāļĨāļ°āļāļēāļĢāļāļ§āļāļāļļāļĄConcurrency
āđāļāļāļāļ°āļāļĩāđāļāļąāļ§āļāļĒāđāļēāļāļāđāļāļāļŦāļāđāļēāļāļĩāđāđāļŠāļāļāđāļŦāđāđāļŦāđāļāļāļķāļāļāļ·āđāļāļāļēāļāļāļāļāļāļēāļĢāđāļĢāļĩāļĒāļ API LLM āđāļāļ Asynchronous āđāļāļāļāļĨāļīāđāļāļāļąāļāđāļāđāļĨāļāđāļŦāđāļāļāļ§āļēāļĄāđāļāđāļāļāļĢāļīāļāļĄāļąāļāļāđāļāļāļāļēāļĢāđāļāļ§āļāļēāļāļāļĩāđāļāļąāļāļāđāļāļāļĄāļēāļāļāļķāđāļ āļĄāļēāļāļģāļāļ§āļēāļĄāļĢāļđāđāļāļąāļāļāļąāļāđāļāļāļāļīāļāļŠāļāļāļāļĒāđāļēāļāļāļĩāđāļŠāļģāļāļąāļ: āļāļēāļĢāđāļāļāļāđāļāļģāļāļēāļĄāđāļĨāļ°āļāļēāļĢāļāļ§āļāļāļļāļĄConcurrency
āļāļēāļĢāđāļāļāļāđāļāļģāļāļēāļĄ: āđāļĄāļ·āđāļāļāđāļāļāļāļąāļāļāļēāļĢāļāļąāļāļāļģāļāļ§āļāļāļģāļāļēāļĄāļāļĩāđāļĄāļēāļ āļāļēāļĢāđāļāļāļāđāļāļģāļāļēāļĄāđāļāđāļāļāļĨāļļāđāļĄāđāļāļāļāļĩāđāļāļ°āļŠāđāļāļāļģāļāļēāļĄāđāļāđāļĨāļ°āļāđāļāđāļĒāļāļāļąāļāļŠāļēāļĄāļēāļĢāļāļāđāļ§āļĒāļāļĢāļąāļāļāļĢāļļāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāđāļāđ
import asyncio
from openai import AsyncOpenAI
<p>async def process_batch(batch, client):
responses = await asyncio.gather(*[
client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}]
) for prompt in batch
])
return [response.choices[0].message.content for response in responses]</p>
<p>async def main():
prompts = [f"āļāļāļāļāđāļāļĄāļđāļĨāđāļāļĩāđāļĒāļ§āļāļąāļāļāļąāļ§āđāļĨāļ {i}" for i in range(100)]
batch_size = 10</p>
<p>async with AsyncOpenAI() as client:
results = []
for i in range(0, len(prompts), batch_size):
batch = prompts[i:i+batch_size]
batch_results = await process_batch(batch, client)
results.extend(batch_results)</p>
<p>for prompt, result in zip(prompts, results):
print(f"āļāļģāļāļēāļĄ: {prompt}\nāļāļģāļāļāļ: {result}\n")</p>
asyncio.run(main())
āļāļēāļĢāļāļ§āļāļāļļāļĄConcurrency: āđāļĄāđāļ§āđāļēāļāļēāļĢāđāļāļĩāļĒāļāđāļāļĢāđāļāļĢāļĄāđāļāļ Asynchronous āļāđāļ§āļĒāđāļŦāđāļŠāļēāļĄāļēāļĢāļāļāļģāđāļāļīāļāļāļēāļĢāļŦāļĨāļēāļĒāļāļĒāđāļēāļāļāļĢāđāļāļĄāļāļąāļ āđāļāđāļāđāļŠāļģāļāļąāļāļāļĩāđāļāļ°āļāđāļāļāļāļ§āļāļāļļāļĄāļĢāļ°āļāļąāļāļāļāļConcurrency āđāļāļ·āđāļāļŦāļĨāļĩāļāđāļĨāļĩāđāļĒāļāļāļēāļĢāđāļŦāđ API āļāļķāđāļāļŠāļēāļĄāļēāļĢāļāļāļģāđāļāđāđāļāļĒāđāļāđ asyncio.Semaphore
import asyncio
from openai import AsyncOpenAI
<p>async def generate_text(prompt, client, semaphore):
async with semaphore:
response = await client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content</p>
<p>async def main():
prompts = [f"āļāļāļāļāđāļāļĄāļđāļĨāđāļāļĩāđāļĒāļ§āļāļąāļāļāļąāļ§āđāļĨāļ {i}" for i in range(100)]
max_concurrent_requests = 5
semaphore = asyncio.Semaphore(max_concurrent_requests)</p>
<p>async with AsyncOpenAI() as client:
tasks = [generate_text(prompt, client, semaphore) for prompt in prompts]
results = await asyncio.gather(*tasks)</p>
<p>for prompt, result in zip(prompts, results):
print(f"āļāļģāļāļēāļĄ: {prompt}\nāļāļģāļāļāļ: {result}\n")</p>
asyncio.run(main())
āđāļāļāļąāļ§āļāļĒāđāļēāļāļāļĩāđ āđāļĢāļēāđāļāđāđāļāļĄāļēāļāļāļĢāđāđāļāļāļēāļĢāļāļģāļāļąāļāļāļģāļāļ§āļāļāļģāļāļāļāļĢāđāļāļĄāļāļąāļāđāļ§āđāļāļĩāđ 5 āđāļāļ·āđāļāđāļŦāđāđāļāđāđāļāļ§āđāļēāđāļĢāļēāđāļĄāđāļāļģāđāļŦāđ API āļāđāļ§āļĄāļāđāļ
āļāļēāļĢāļĢāļąāļāļĄāļ·āļāļāđāļāļāļīāļāļāļĨāļēāļāđāļĨāļ°āļāļēāļĢāļāļģāļāđāļģāđāļ API LLM āđāļāļ Asynchronous
āđāļĄāļ·āđāļāļāļģāļāļēāļāļāļąāļ API āļ āļēāļĒāļāļāļ āļĄāļąāļāļŠāļģāļāļąāļāļāļĩāđāļāļ°āļāļģāļāļēāļĢāļĢāļąāļāļĄāļ·āļāļāđāļāļāļīāļāļāļĨāļēāļāđāļĨāļ°āļāļēāļĢāļāļģāļāđāļģāļĄāļēāđāļāđāđāļāļ·āđāļāđāļŦāđāđāļāđāđāļāļ§āđāļēāđāļāļāļāļĨāļīāđāļāļāļąāļāļāļāļāļāļļāļāļĄāļĩāļāļ§āļēāļĄāļāļāļāļēāļāļāđāļāļāđāļāļāļīāļāļāļĨāļēāļāđāļĨāļ°āļŠāļēāļĄāļēāļĢāļāļāļ·āđāļāļāļąāļ§āđāļāđāļāļēāļāļāļ§āļēāļĄāļĨāđāļĄāđāļŦāļĨāļ§
import asyncio
import random
from openai import AsyncOpenAI
from tenacity import retry, stop_after_attempt, wait_exponential
class APIError(Exception):
pass
<p>@retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=4, max=10))
async def generate_text_with_retry(prompt, client):
try:
response = await client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content
except Exception as e:
print(f"āļāđāļāļāļīāļāļāļĨāļēāļāđāļāļīāļāļāļķāđāļ: {e}")
raise APIError("āđāļĄāđāļŠāļēāļĄāļēāļĢāļāļŠāļĢāđāļēāļāļāđāļāļāļ§āļēāļĄāđāļāđ")</p>
<p>async def process_prompt(prompt, client, semaphore):
async with semaphore:
try:
result = await generate_text_with_retry(prompt, client)
return prompt, result
except APIError:
return prompt, "āđāļĄāđāļŠāļēāļĄāļēāļĢāļāļŠāļĢāđāļēāļāļāļģāļāļāļāļŦāļĨāļąāļāļāļēāļāļŦāļĨāļēāļĒāļāļĢāļąāđāļ"</p>
<p>async def main():
prompts = [f"āļāļāļāļāđāļāļĄāļđāļĨāđāļāļĩāđāļĒāļ§āļāļąāļāļāļąāļ§āđāļĨāļ {i}" for i in range(20)]
max_concurrent_requests = 5
semaphore = asyncio.Semaphore(max_concurrent_requests)</p>
<p>async with AsyncOpenAI() as client:
tasks = [process_prompt(prompt, client, semaphore) for prompt in prompts]
results = await asyncio.gather(*tasks)</p>
<p>for prompt, result in results:
print(f"āļāļģāļāļēāļĄ: {prompt}\nāļāļģāļāļāļ: {result}\n")</p>
asyncio.run(main())
āđāļāļāļąāļ§āļāļĒāđāļēāļāļāļĩāđ āđāļĢāļēāđāļāļīāđāļĄāļāļēāļĢāļĢāļąāļāļĄāļ·āļāļāđāļāļāļīāļāļāļĨāļēāļāđāļĨāļ°āļāļēāļĢāļāļģāļāđāļģāđāļāđāļēāđāļāđāļāđāļāđāļ āđāļāļĒāđāļāđāđāļĨāļāļĢāļēāļĢāļĩ tenacity āđāļāļ·āđāļāļāļģāļāđāļģāļāļēāļĢāđāļĢāļĩāļĒāļ API āļŦāļĨāļąāļāļāļēāļāļĢāļ°āļĒāļ°āđāļ§āļĨāļēāļāļĩāđāļāļģāļŦāļāļ
āļāļēāļĢāđāļāļīāđāļĄāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ: āļāļēāļĢāļŠāļāļĢāļĩāļĄāļāļģāļāļāļ
āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļŠāļĢāđāļēāļāđāļāļ·āđāļāļŦāļēāļāļĩāđāļĒāļēāļ§ āļāļēāļĢāļŠāļāļĢāļĩāļĄāļāļģāļāļāļāļŠāļēāļĄāļēāļĢāļāļāļĢāļąāļāļāļĢāļļāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļāļĩāđāļĢāļąāļāļĢāļđāđāļāļāļāđāļāļāļāļĨāļīāđāļāļāļąāļāļāļāļāļāļļāļāđāļāđ āđāļāļĒāđāļĄāđāļāđāļāļāļĢāļāļāļāļāļ§āđāļēāļāļ°āđāļāđāļĢāļąāļāļāļģāļāļāļāļāļąāđāļāļŦāļĄāļ āļāļļāļāļŠāļēāļĄāļēāļĢāļāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļĨāļ°āđāļŠāļāļāļŠāđāļ§āļāļāļāļāļāđāļāļāļ§āļēāļĄāļāļĩāđāļāļĢāđāļāļĄāđāļĨāđāļ§
import asyncio
from openai import AsyncOpenAI
<p>async def stream_text(prompt, client):
stream = await client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}],
stream=True
)</p>
<p>full_response = ""
async for chunk in stream:
if chunk.choices[0].delta.content is not None:
content = chunk.choices[0].delta.content
full_response += content
print(content, end='', flush=True)</p>
<p>print("\n")
return full_response</p>
<p>async def main():
prompt = "āđāļāļĩāļĒāļāđāļĢāļ·āđāļāļāļŠāļąāđāļāđāļāļĩāđāļĒāļ§āļāļąāļāļāļąāļāļ§āļīāļāļĒāļēāļĻāļēāļŠāļāļĢāđāļāļĩāđāđāļāļīāļāļāļēāļāļāđāļēāļĄāđāļ§āļĨāļē"</p>
<p>async with AsyncOpenAI() as client:
result = await stream_text(prompt, client)</p>
<p>print(f"āļāļģāļāļāļāļāļąāđāļāļŦāļĄāļ:\n{result}")</p>
asyncio.run(main())
āđāļāļāļąāļ§āļāļĒāđāļēāļāļāļĩāđ āđāļĢāļēāđāļŠāļāļāđāļŦāđāđāļŦāđāļāļ§āļīāļāļĩāļāļēāļĢāļŠāļāļĢāļĩāļĄāļāļģāļāļāļāļāļēāļ API āđāļāļĒāļāļīāļĄāļāđāļŠāđāļ§āļāļāļāļāļāđāļāļāļ§āļēāļĄāļāļĩāđāļāļĢāđāļāļĄāđāļĨāđāļ§ āļāļķāđāļāđāļāđāļāļāļĢāļ°āđāļĒāļāļāđāļāļĒāđāļēāļāļĒāļīāđāļāļŠāļģāļŦāļĢāļąāļāđāļāļāļāļĨāļīāđāļāļāļąāļāļāļĩāđāļāđāļāļāļāļēāļĢāđāļŦāđāļāļđāđāđāļāđāđāļŦāđāļāļāļĨāļĨāļąāļāļāđāđāļāļāđāļĢāļĩāļĒāļĨāđāļāļĄāđ
āļāļēāļĢāļŠāļĢāđāļēāļ ėāđāļāđāļāļĨāļ§āđāđāļāļ Asynchronous āļāđāļ§āļĒ LangChain
āļŠāļģāļŦāļĢāļąāļāđāļāļāļāļĨāļīāđāļāļāļąāļāļāļĩāđāđāļāđ LLM āļāļĩāđāļāļąāļāļāđāļāļ āđāļāļĢāļĄāđāļ§āļīāļĢāđāļ LangChain āđāļŦāđāļāļēāļĢāļŠāļĢāđāļēāļāļŠāļđāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāļāļēāļĢāđāļĢāļĩāļĒāļ LLM āļŦāļĨāļēāļĒāļāļĢāļąāđāļāđāļĨāļ°āļĢāļ§āļĄāđāļāļĢāļ·āđāļāļāļĄāļ·āļāļāļ·āđāļāđ āļĄāļēāļāļģāđāļŦāđāđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļŠāļĢāđāļēāļ ėāđāļāđāļāļĨāļ§āđāļāļĩāđāļāļąāļāļāđāļāļāđāļāđ
āļāļąāļ§āļāļĒāđāļēāļāļāļĩāđāđāļŠāļāļāđāļŦāđāđāļŦāđāļāļ§āļīāļāļĩāļāļēāļĢāđāļāđ LangChain āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļŠāļĢāđāļēāļ ėāđāļāđāļāļĨāļ§āđāļāļĩāđāļĄāļĩāļāļēāļĢāļŠāļāļĢāļĩāļĄāđāļĨāļ°āļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢāđāļāļ Asynchronous
import asyncio
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
from langchain.callbacks.manager import AsyncCallbackManager
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
<p>async def generate_story(topic):
llm = OpenAI(temperature=0.7, streaming=True, callback_manager=AsyncCallbackManager([StreamingStdOutCallbackHandler()]))
prompt = PromptTemplate(
input_variables=["topic"],
template="āđāļāļĩāļĒāļāđāļĢāļ·āđāļāļāļŠāļąāđāļāđāļāļĩāđāļĒāļ§āļāļąāļ {topic}"
)
chain = LLMChain(llm=llm, prompt=prompt)
return await chain.arun(topic=topic)</p>
<p>async def main():
topics = ["āļāđāļēāļĄāļŦāļąāļĻāļāļĢāļĢāļĒāđ", "āđāļĄāļ·āļāļāđāļāļāļāļēāļāļ", "āļāļēāļĢāļĒāļāļĢāļĢāļĄāđāļāđāļāđāļģ"]
tasks = [generate_story(topic) for topic in topics]
stories = await asyncio.gather(*tasks)</p>
<p>for topic, story in zip(topics, stories):
print(f"\nāļŦāļąāļ§āļāđāļ: {topic}\nāđāļĢāļ·āđāļāļāļĢāļēāļ§: {story}\n{'='*50}\n")</p>
asyncio.run(main())
āļāļēāļĢāđāļŦāđāļāļĢāļīāļāļēāļĢāđāļāļāļāļĨāļīāđāļāļāļąāļ LLM āđāļāļ Asynchronous āļāđāļ§āļĒ FastAPI
āđāļāļ·āđāļāđāļŦāđāđāļāļāļāļĨāļīāđāļāļāļąāļ LLM āđāļāļ Asynchronous āļāļāļāļāļļāļāļāļĢāđāļāļĄāđāļŦāđāļāļĢāļīāļāļēāļĢāđāļāđāļāđāļ§āđāļāđāļāļāļĢāđāļ§āļīāļŠ FastAPI āđāļāđāļāļāļąāļ§āđāļĨāļ·āļāļāļāļĩāđāļāļĩāđāļāļ·āđāļāļāļāļēāļāļāļēāļĢāļŠāļāļąāļāļŠāļāļļāļāļāļēāļĢāļāļģāđāļāļīāļāļāļēāļĢāđāļāļ Asynchronous āđāļāļĒāļāļĢāļĢāļĄāļāļēāļāļī
from fastapi import FastAPI, BackgroundTasks
from pydantic import BaseModel
from openai import AsyncOpenAI
app = FastAPI()
client = AsyncOpenAI()
<p>class GenerationRequest(BaseModel):
prompt: str</p>
<p>class GenerationResponse(BaseModel):
generated_text: str</p>
<p>@app.post("/generate", response_model=GenerationResponse)
async def generate_text(request: GenerationRequest, background_tasks: BackgroundTasks):
response = await client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": request.prompt}]
)
generated_text = response.choices[0].message.content</p>
<p># āļāļģāļĨāļāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļāļīāđāļĄāđāļāļīāļĄāđāļāļāļ·āđāļāļŦāļĨāļąāļ
background_tasks.add_task(log_generation, request.prompt, generated_text)</p>
<p>return GenerationResponse(generated_text=generated_text)</p>
<p>async def log_generation(prompt: str, generated_text: str):
# āļāļģāļĨāļāļāļāļēāļĢāļāļąāļāļāļķāļāļŦāļĢāļ·āļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļāļīāđāļĄāđāļāļīāļĄ
await asyncio.sleep(2)
print(f"āļāļąāļāļāļķāļ: āļāļģāļāļēāļĄ '{prompt}' āļŠāļĢāđāļēāļāļāđāļāļāļ§āļēāļĄāļāļĩāđāļĄāļĩāļāļ§āļēāļĄāļĒāļēāļ§ {len(generated_text)}")</p>
<p>if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
āđāļāļāļāļĨāļīāđāļāļāļąāļ FastAPI āļāļĩāđāļŠāļĢāđāļēāļāļāļļāļāļŠāļīāđāļāļŠāļļāļ /generate āļāļĩāđāļĢāļąāļāļāļģāļāļēāļĄāđāļĨāļ°āļāļ·āļāļāļģāļāļāļāļāļĩāđāļŠāļĢāđāļēāļāļāļķāđāļ āļāļāļāļāļēāļāļāļĩāđāļĒāļąāļāđāļŠāļāļāđāļŦāđāđāļŦāđāļāļ§āļīāļāļĩāļāļēāļĢāđāļāđāļ āļēāļĢāļāļīāļāļāļ·āđāļāļŦāļĨāļąāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļāļīāđāļĄāđāļāļīāļĄāđāļāļĒāđāļĄāđāļāļĨāđāļāļāļāļģāļāļāļ
āđāļāļ§āļāļēāļāļāļāļīāļāļąāļāļīāļāļĩāđāļāļĩāļāļĩāđāļŠāļļāļāđāļĨāļ°āļāđāļāļāļīāļāļāļĨāļēāļāļāļąāđāļ§āđāļ
āđāļĄāļ·āđāļāļāļģāļāļēāļāļāļąāļāļāļēāļĢāđāļĢāļĩāļĒāļ API LLM āđāļāļ Asynchronous āļāļ§āļĢāļāļāļīāļāļąāļāļīāļāļēāļĄāđāļāļ§āļāļēāļāļāļāļīāļāļąāļāļīāļāļĩāđāļāļĩāļāđāļāđāļāļāļĩāđ:
- āđāļāđāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāđāļāļāļāļđāļĨ: āđāļĄāļ·āđāļāļāļģāļāļēāļĢāđāļĢāļĩāļĒāļāļŦāļĨāļēāļĒāļāļĢāļąāđāļ āđāļŦāđāđāļāđāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāđāļāļāļāļđāļĨāđāļāļ·āđāļāļĨāļāļāļēāļĢāđāļāđāļ§āļāļĢāđāđāļŪāļ
- āļāļģāļāļēāļĢāļĢāļąāļāļĄāļ·āļāļāđāļāļāļīāļāļāļĨāļēāļāļĄāļēāđāļāđ: āļāļīāļāļēāļĢāļāļēāļāļąāļāļŦāļēāđāļāļĢāļ·āļāļāđāļēāļĒ āļāđāļāļāļīāļāļāļĨāļēāļ API āđāļĨāļ°āļāļģāļāļāļāļāļĩāđāđāļĄāđāļāļēāļāļāļīāļ
- āđāļāļēāļĢāļāļāļĩāļāļāļģāļāļąāļāļāļąāļāļĢāļē: āđāļāđāđāļāļĄāļēāļāļāļĢāđāļŦāļĢāļ·āļāļāļĨāđāļāļāļēāļĢāļāļ§āļāļāļļāļĄConcurrencyāļāļ·āđāļāđ āđāļāļ·āđāļāļŦāļĨāļĩāļāđāļĨāļĩāđāļĒāļāļāļēāļĢāđāļŦāđ API āļāđāļ§āļĄāļāđāļ
- āļāļīāļāļāļēāļĄāđāļĨāļ°āļāļąāļāļāļķāļ: āļāļģāļāļēāļĢāļāļąāļāļāļķāļāļāļĩāđāļāļĢāļāļāļāļĨāļļāļĄāļĄāļēāđāļāđāđāļāļ·āđāļāļāļīāļāļāļēāļĄāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāđāļĨāļ°āļĢāļ°āļāļļāļāļąāļāļŦāļē
- āđāļāđāļāļēāļĢāļŠāļāļĢāļĩāļĄāļŠāļģāļŦāļĢāļąāļāđāļāļ·āđāļāļŦāļēāļāļĩāđāļĒāļēāļ§: āļāđāļ§āļĒāđāļŦāđāļāļđāđāđāļāđāđāļāđāļĢāļąāļāļāļĨāļĨāļąāļāļāđāđāļāļāđāļĢāļĩāļĒāļĨāđāļāļĄāđāđāļĨāļ°āļāđāļ§āļĒāđāļŦāđāļŠāļēāļĄāļēāļĢāļāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļŠāđāļ§āļāļāļāļāļāđāļāļāļ§āļēāļĄāļāļĩāđāļāļĢāđāļāļĄāđāļĨāđāļ§












