■ adispatch_custom_event 함수를 사용해 비동기 이벤트를 발생시키는 방법을 보여준다.
▶ main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import asyncio from langchain_core.runnables import RunnableLambda from langchain_core.callbacks.manager import adispatch_custom_event @RunnableLambda async def testRunnableLambda(x : str) -> str: await adispatch_custom_event("event1", {"x" : x}) await adispatch_custom_event("event2", 5) return x async def main(): asyncGenerator = testRunnableLambda.astream_events("hello world", version = "v2") async for eventDictionary in asyncGenerator: print(eventDictionary) asyncio.run(main()) """ {'event': 'on_chain_start', 'data': {'input': 'hello world'}, 'name': 'testRunnableLambda', 'tags': [], 'run_id': '0d42e221-af5c-49c8-9dde-7f2dc4c0f8f0', 'metadata': {}, 'parent_ids': []} {'event': 'on_custom_event', 'run_id': '0d42e221-af5c-49c8-9dde-7f2dc4c0f8f0', 'name': 'event1', 'tags': [], 'metadata': {}, 'data': {'x': 'hello world'}, 'parent_ids': []} {'event': 'on_custom_event', 'run_id': '0d42e221-af5c-49c8-9dde-7f2dc4c0f8f0', 'name': 'event2', 'tags': [], 'metadata': {}, 'data': 5, 'parent_ids': []} {'event': 'on_chain_stream', 'run_id': '0d42e221-af5c-49c8-9dde-7f2dc4c0f8f0', 'name': 'testRunnableLambda', 'tags': [], 'metadata': {}, 'data': {'chunk': 'hello world'}, 'parent_ids': []} {'event': 'on_chain_end', 'data': {'output': 'hello world'}, 'run_id': '0d42e221-af5c-49c8-9dde-7f2dc4c0f8f0', 'name': 'testRunnableLambda', 'tags': [], 'metadata': {}, 'parent_ids': []} """ |
▶ requirements.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
aiohappyeyeballs==2.4.3 aiohttp==3.11.6 aiosignal==1.3.1 annotated-types==0.7.0 anyio==4.6.2.post1 attrs==24.2.0 certifi==2024.8.30 charset-normalizer==3.4.0 frozenlist==1.5.0 greenlet==3.1.1 h11==0.14.0 httpcore==1.0.7 httpx==0.27.2 idna==3.10 jsonpatch==1.33 jsonpointer==3.0.0 langchain==0.3.7 langchain-core==0.3.19 langchain-text-splitters==0.3.2 langsmith==0.1.143 multidict==6.1.0 numpy==1.26.4 orjson==3.10.11 packaging==24.2 propcache==0.2.0 pydantic==2.9.2 pydantic_core==2.23.4 PyYAML==6.0.2 requests==2.32.3 requests-toolbelt==1.0.0 sniffio==1.3.1 SQLAlchemy==2.0.36 tenacity==9.0.0 typing_extensions==4.12.2 urllib3==2.2.3 yarl==1.17.2 |
※ pip install langchain 명령을 실행했다.