■ ChatOpenAI 클래스의 with_structured_output 메소드를 사용해 태그 설정 체인을 만드는 방법을 보여준다.
▶ 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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
import os from langchain_core.prompts import ChatPromptTemplate from langchain_core.pydantic_v1 import BaseModel, Field from langchain_openai import ChatOpenAI os.environ["OPENAI_API_KEY"] = "<OPENAI_API_KEY>" chatPromptTemplate = ChatPromptTemplate.from_template( """ Extract the desired information from the following passage. Only extract the properties mentioned in the 'Classification' function. Passage : {input} """ ) class Classification(BaseModel): sentiment : str = Field(description = "The sentiment of the text" ) aggressiveness : int = Field(description = "How aggressive the text is on a scale from 1 to 10") language : str = Field(description = "The language the text is written in" ) chatOpenAI = ChatOpenAI(model="gpt-3.5-turbo-0125", temperature = 0) structuredOutputRunnableSequence = chatOpenAI.with_structured_output(Classification) taggingRunnableSequence = chatPromptTemplate | structuredOutputRunnableSequence classification1 = taggingRunnableSequence.invoke({"input" : "Estoy increiblemente contento de haberte conocido! Creo que seremos muy buenos amigos!"}) print(classification1) """ sentiment='positive' aggressiveness=1 language='Spanish' """ classification2 = taggingRunnableSequence.invoke({"input" : "Estoy muy enojado con vos! Te voy a dar tu merecido!"}) print(classification2) """ sentiment='negative' aggressiveness=8 language='Spanish' """ classification3 = taggingRunnableSequence.invoke({"input" : "Weather is ok here, I can go outside without much more than a coat"}) print(classification3) """ sentiment='neutral' aggressiveness=2 language='English' """ |
▶ 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 39 40 41 42 43 |
aiohttp==3.9.5 aiosignal==1.3.1 annotated-types==0.7.0 anyio==4.4.0 async-timeout==4.0.3 attrs==23.2.0 certifi==2024.6.2 charset-normalizer==3.3.2 distro==1.9.0 exceptiongroup==1.2.1 frozenlist==1.4.1 greenlet==3.0.3 h11==0.14.0 httpcore==1.0.5 httpx==0.27.0 idna==3.7 jsonpatch==1.33 jsonpointer==3.0.0 langchain==0.2.5 langchain-core==0.2.7 langchain-openai==0.1.8 langchain-text-splitters==0.2.1 langsmith==0.1.77 multidict==6.0.5 numpy==1.26.4 openai==1.34.0 orjson==3.10.5 packaging==24.1 pydantic==2.7.4 pydantic_core==2.18.4 PyYAML==6.0.1 regex==2024.5.15 requests==2.32.3 sniffio==1.3.1 SQLAlchemy==2.0.30 tenacity==8.3.0 tiktoken==0.7.0 tqdm==4.66.4 typing_extensions==4.12.2 urllib3==2.2.1 yarl==1.9.4 |
※ pip install langchain langchain-openai 명령을 실행했다.