āđ‚āļĄāđ€āļ”āļĨāđāļĨāļ°āđāļžāļĨāļ•āļŸāļ­āļĢāđŒāļĄ AI

āļāļēāļĢāđ€āļĢāļĩāļĒāļ API LLM āđāļšāļš Asynchronous āđƒāļ™ Python: āļ„āļđāđˆāļĄāļ·āļ­āļ—āļĩāđˆāļ„āļĢāļ­āļšāļ„āļĨāļļāļĄ

mm
āđ€āļžāļīāđˆāļĄ Unite.AI āļĨāļ‡āđƒāļ™āđāļŦāļĨāđˆāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ„āļļāļ“āļ•āđ‰āļ­āļ‡āļāļēāļĢāļšāļ™ Google

āđƒāļ™āļāļēāļ™āļ°āļ™āļąāļāļžāļąāļ’āļ™āļēāđāļĨāļ°āļ™āļąāļāļ§āļīāļ—āļĒāļēāļĻāļēāļŠāļ•āļĢāđŒāļ‚āđ‰āļ­āļĄāļđāļĨ āđ€āļĢāļēāļĄāļąāļāļžāļšāļ§āđˆāļēāļ•āļąāļ§āđ€āļ­āļ‡āļ•āđ‰āļ­āļ‡āļāļēāļĢāđ‚āļ•āđ‰āļ•āļ­āļšāļāļąāļšāđ‚āļĄāđ€āļ”āļĨāļ—āļĩāđˆāļ—āļĢāļ‡āļžāļĨāļąāļ‡āđ€āļŦāļĨāđˆāļēāļ™āļĩāđ‰āļœāđˆāļēāļ™ 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(&quot;Alice&quot;),
greet(&quot;Bob&quot;),
greet(&quot;Charlie&quot;)
)</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
&lt;div class=&quot;relative flex flex-col rounded-lg&quot;&gt;

āļāļēāļĢāđ€āļĢāļĩāļĒāļ 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=&quot;gpt-3.5-turbo&quot;,
messages=[{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: prompt}]
)
return response.choices[0].message.content</p>

<p>async def main():
prompts = [
&quot;āļ­āļ˜āļīāļšāļēāļĒāļāļēāļĢāļ„āļģāļ™āļ§āļ“āđāļšāļšāļ„āļ§āļ­āļ™āļ•āļąāļĄāđƒāļ™āļ„āļģāļžāļđāļ”āļ—āļĩāđˆāđ€āļĢāļĩāļĒāļšāļ‡āđˆāļēāļĒ.&quot;,
&quot;āđ€āļ‚āļĩāļĒāļ™āļŪāļ°āļ­āļīāļāļđāđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļ›āļąāļāļāļēāļ›āļĢāļ°āļ”āļīāļĐāļāđŒ.&quot;,
&quot;āļ­āļ˜āļīāļšāļēāļĒāļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāļ‚āļ­āļ‡āļāļēāļĢ Ņ„ÐūŅ‚āļ­āļŠāļīāļ™āđ€āļ—āļ‹āļīāļŠ.&quot;
]</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&quot;āļ„āļģāļ–āļēāļĄ: {prompt}\nāļ„āļģāļ•āļ­āļš: {result}\n&quot;)</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=&quot;gpt-3.5-turbo&quot;,
messages=[{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: prompt}]
) for prompt in batch
])
return [response.choices[0].message.content for response in responses]</p>

<p>async def main():
prompts = [f&quot;āļšāļ­āļāļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļ•āļąāļ§āđ€āļĨāļ‚ {i}&quot; 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&quot;āļ„āļģāļ–āļēāļĄ: {prompt}\nāļ„āļģāļ•āļ­āļš: {result}\n&quot;)</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=&quot;gpt-3.5-turbo&quot;,
messages=[{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: prompt}]
)
return response.choices[0].message.content</p>

<p>async def main():
prompts = [f&quot;āļšāļ­āļāļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļ•āļąāļ§āđ€āļĨāļ‚ {i}&quot; 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&quot;āļ„āļģāļ–āļēāļĄ: {prompt}\nāļ„āļģāļ•āļ­āļš: {result}\n&quot;)</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=&quot;gpt-3.5-turbo&quot;,
messages=[{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: prompt}]
)
return response.choices[0].message.content
except Exception as e:
print(f&quot;āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āđ€āļāļīāļ”āļ‚āļķāđ‰āļ™: {e}&quot;)
raise APIError(&quot;āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āļŠāļĢāđ‰āļēāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāđ„āļ”āđ‰&quot;)</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, &quot;āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āļŠāļĢāđ‰āļēāļ‡āļ„āļģāļ•āļ­āļšāļŦāļĨāļąāļ‡āļˆāļēāļāļŦāļĨāļēāļĒāļ„āļĢāļąāđ‰āļ‡&quot;</p>

<p>async def main():
prompts = [f&quot;āļšāļ­āļāļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļ•āļąāļ§āđ€āļĨāļ‚ {i}&quot; 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&quot;āļ„āļģāļ–āļēāļĄ: {prompt}\nāļ„āļģāļ•āļ­āļš: {result}\n&quot;)</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=&quot;gpt-3.5-turbo&quot;,
messages=[{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: prompt}],
stream=True
)</p>

<p>full_response = &quot;&quot;
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=&#039;&#039;, flush=True)</p>

<p>print(&quot;\n&quot;)
return full_response</p>

<p>async def main():
prompt = &quot;āđ€āļ‚āļĩāļĒāļ™āđ€āļĢāļ·āđˆāļ­āļ‡āļŠāļąāđ‰āļ™āđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļ™āļąāļāļ§āļīāļ—āļĒāļēāļĻāļēāļŠāļ•āļĢāđŒāļ—āļĩāđˆāđ€āļ”āļīāļ™āļ—āļēāļ‡āļ‚āđ‰āļēāļĄāđ€āļ§āļĨāļē&quot;</p>

<p>async with AsyncOpenAI() as client:
result = await stream_text(prompt, client)</p>

<p>print(f&quot;āļ„āļģāļ•āļ­āļšāļ—āļąāđ‰āļ‡āļŦāļĄāļ”:\n{result}&quot;)</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=[&quot;topic&quot;],
template=&quot;āđ€āļ‚āļĩāļĒāļ™āđ€āļĢāļ·āđˆāļ­āļ‡āļŠāļąāđ‰āļ™āđ€āļāļĩāđˆāļĒāļ§āļāļąāļš {topic}&quot;
)
chain = LLMChain(llm=llm, prompt=prompt)
return await chain.arun(topic=topic)</p>

<p>async def main():
topics = [&quot;āļ›āđˆāļēāļĄāļŦāļąāļĻāļˆāļĢāļĢāļĒāđŒ&quot;, &quot;āđ€āļĄāļ·āļ­āļ‡āđƒāļ™āļ­āļ™āļēāļ„āļ•&quot;, &quot;āļ­āļēāļĢāļĒāļ˜āļĢāļĢāļĄāđƒāļ•āđ‰āļ™āđ‰āļģ&quot;]
tasks = [generate_story(topic) for topic in topics]
stories = await asyncio.gather(*tasks)</p>

<p>for topic, story in zip(topics, stories):
print(f&quot;\nāļŦāļąāļ§āļ‚āđ‰āļ­: {topic}\nāđ€āļĢāļ·āđˆāļ­āļ‡āļĢāļēāļ§: {story}\n{&#039;=&#039;*50}\n&quot;)</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(&quot;/generate&quot;, response_model=GenerationResponse)
async def generate_text(request: GenerationRequest, background_tasks: BackgroundTasks):
response = await client.chat.completions.create(
model=&quot;gpt-3.5-turbo&quot;,
messages=[{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: 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&quot;āļšāļąāļ™āļ—āļķāļ: āļ„āļģāļ–āļēāļĄ &#039;{prompt}&#039; āļŠāļĢāđ‰āļēāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ—āļĩāđˆāļĄāļĩāļ„āļ§āļēāļĄāļĒāļēāļ§ {len(generated_text)}&quot;)</p>

<p>if __name__ == &quot;__main__&quot;:
import uvicorn
uvicorn.run(app, host=&quot;0.0.0.0&quot;, port=8000)

āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™ FastAPI āļ™āļĩāđ‰āļŠāļĢāđ‰āļēāļ‡āļˆāļļāļ”āļŠāļīāđ‰āļ™āļŠāļļāļ” /generate āļ—āļĩāđˆāļĢāļąāļšāļ„āļģāļ–āļēāļĄāđāļĨāļ°āļ„āļ·āļ™āļ„āļģāļ•āļ­āļšāļ—āļĩāđˆāļŠāļĢāđ‰āļēāļ‡āļ‚āļķāđ‰āļ™ āļ™āļ­āļāļˆāļēāļāļ™āļĩāđ‰āļĒāļąāļ‡āđāļŠāļ”āļ‡āđƒāļŦāđ‰āđ€āļŦāđ‡āļ™āļ§āļīāļ˜āļĩāļāļēāļĢāđƒāļŠāđ‰āļ āļēāļĢāļāļīāļˆāļžāļ·āđ‰āļ™āļŦāļĨāļąāļ‡āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄāđ‚āļ”āļĒāđ„āļĄāđˆāļšāļĨāđ‡āļ­āļāļ„āļģāļ•āļ­āļš

āđāļ™āļ§āļ—āļēāļ‡āļ›āļāļīāļšāļąāļ•āļīāļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ”āđāļĨāļ°āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āļ—āļąāđˆāļ§āđ„āļ›

āđ€āļĄāļ·āđˆāļ­āļ—āļģāļ‡āļēāļ™āļāļąāļšāļāļēāļĢāđ€āļĢāļĩāļĒāļ API LLM āđāļšāļš Asynchronous āļ„āļ§āļĢāļ›āļāļīāļšāļąāļ•āļīāļ•āļēāļĄāđāļ™āļ§āļ—āļēāļ‡āļ›āļāļīāļšāļąāļ•āļīāļ—āļĩāđˆāļ”āļĩāļ•āđˆāļ­āđ„āļ›āļ™āļĩāđ‰:

  1. āđƒāļŠāđ‰āļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āđāļšāļšāļžāļđāļĨ: āđ€āļĄāļ·āđˆāļ­āļ—āļģāļāļēāļĢāđ€āļĢāļĩāļĒāļāļŦāļĨāļēāļĒāļ„āļĢāļąāđ‰āļ‡ āđƒāļŦāđ‰āđƒāļŠāđ‰āļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āđāļšāļšāļžāļđāļĨāđ€āļžāļ·āđˆāļ­āļĨāļ”āļāļēāļĢāđ‚āļ­āđ€āļ§āļ­āļĢāđŒāđ€āļŪāļ”
  2. āļ™āļģāļāļēāļĢāļĢāļąāļšāļĄāļ·āļ­āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āļĄāļēāđƒāļŠāđ‰: āļžāļīāļˆāļēāļĢāļ“āļēāļ›āļąāļāļŦāļēāđ€āļ„āļĢāļ·āļ­āļ‚āđˆāļēāļĒ āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ” API āđāļĨāļ°āļ„āļģāļ•āļ­āļšāļ—āļĩāđˆāđ„āļĄāđˆāļ„āļēāļ”āļ„āļīāļ”
  3. āđ€āļ„āļēāļĢāļžāļ‚āļĩāļ”āļˆāļģāļāļąāļ”āļ­āļąāļ•āļĢāļē: āđƒāļŠāđ‰āđ€āļ‹āļĄāļēāļŸāļ­āļĢāđŒāļŦāļĢāļ·āļ­āļāļĨāđ„āļāļāļēāļĢāļ„āļ§āļšāļ„āļļāļĄConcurrencyāļ­āļ·āđˆāļ™āđ† āđ€āļžāļ·āđˆāļ­āļŦāļĨāļĩāļāđ€āļĨāļĩāđˆāļĒāļ‡āļāļēāļĢāđƒāļŦāđ‰ API āļ—āđˆāļ§āļĄāļ—āđ‰āļ™
  4. āļ•āļīāļ”āļ•āļēāļĄāđāļĨāļ°āļšāļąāļ™āļ—āļķāļ: āļ™āļģāļāļēāļĢāļšāļąāļ™āļ—āļķāļāļ—āļĩāđˆāļ„āļĢāļ­āļšāļ„āļĨāļļāļĄāļĄāļēāđƒāļŠāđ‰āđ€āļžāļ·āđˆāļ­āļ•āļīāļ”āļ•āļēāļĄāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāđāļĨāļ°āļĢāļ°āļšāļļāļ›āļąāļāļŦāļē
  5. āđƒāļŠāđ‰āļāļēāļĢāļŠāļ•āļĢāļĩāļĄāļŠāļģāļŦāļĢāļąāļšāđ€āļ™āļ·āđ‰āļ­āļŦāļēāļ—āļĩāđˆāļĒāļēāļ§: āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļœāļđāđ‰āđƒāļŠāđ‰āđ„āļ”āđ‰āļĢāļąāļšāļœāļĨāļĨāļąāļžāļ˜āđŒāđāļšāļšāđ€āļĢāļĩāļĒāļĨāđ„āļ—āļĄāđŒāđāļĨāļ°āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ–āļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļŠāđˆāļ§āļ™āļ‚āļ­āļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ—āļĩāđˆāļžāļĢāđ‰āļ­āļĄāđāļĨāđ‰āļ§

āļ‰āļąāļ™āđƒāļŠāđ‰āđ€āļ§āļĨāļēāļ—āļĩāđˆāļœāđˆāļēāļ™āļĄāļē 5 āļ›āļĩāđƒāļ™āļāļēāļĢāļĻāļķāļāļĐāļēāļŠāļīāđˆāļ‡āļ—āļĩāđˆāļ™āđˆāļēāļŠāļ™āđƒāļˆāđ€āļāļĩāđˆāļĒāļ§āļāļąāļš Machine Learning āđāļĨāļ° Deep Learning āļ„āļ§āļēāļĄāđ€āļŠāļĩāđˆāļĒāļ§āļŠāļēāļāđāļĨāļ°āļ„āļ§āļēāļĄāļŦāļĨāļ‡āđƒāļŦāļĨāļ‚āļ­āļ‡āļ‰āļąāļ™āļ—āļģāđƒāļŦāđ‰āļ‰āļąāļ™āđ€āļ‚āđ‰āļēāļĢāđˆāļ§āļĄāđƒāļ™āđ‚āļ„āļĢāļ‡āļāļēāļĢāļžāļąāļ’āļ™āļēāļ‹āļ­āļŸāļ•āđŒāđāļ§āļĢāđŒāļĄāļēāļāļāļ§āđˆāļē 50 āđ‚āļ„āļĢāļ‡āļāļēāļĢāļ—āļĩāđˆāļĄāļĩāļ„āļ§āļēāļĄāļŦāļĨāļēāļāļŦāļĨāļēāļĒ āđ‚āļ”āļĒāļĄāļļāđˆāļ‡āđ€āļ™āđ‰āļ™āđ„āļ›āļ—āļĩāđˆ AI/ML āļ„āļ§āļēāļĄāļ­āļĒāļēāļāļĢāļđāđ‰āļ­āļĒāļēāļāđ€āļŦāđ‡āļ™āļ‚āļ­āļ‡āļ‰āļąāļ™āļĒāļąāļ‡āļ—āļģāđƒāļŦāđ‰āļ‰āļąāļ™āļŠāļ™āđƒāļˆāđƒāļ™āļ”āđ‰āļēāļ™ Natural Language Processing āļ‹āļķāđˆāļ‡āđ€āļ›āđ‡āļ™āļŠāļēāļ‚āļēāļ—āļĩāđˆāļ‰āļąāļ™āļ•āđ‰āļ­āļ‡āļāļēāļĢāļŠāļģāļĢāļ§āļˆāļ•āđˆāļ­āđ„āļ›