■ SemanticSimilarityExampleSelector 클래스의 select_examples 메소드를 사용해 예제 리스트를 선택하는 방법을 보여준다.
※ OPENAI_API_KEY 환경 변수 값은 .env 파일에 정의한다.
▶ 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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
from dotenv import load_dotenv from langchain_openai import OpenAIEmbeddings from langchain_chroma import Chroma from langchain_core.example_selectors import SemanticSimilarityExampleSelector load_dotenv() exampleDictionaryList = [ { "question" : "스티브 잡스와 아인슈타인 중 누가 더 오래 살았습니까?", "answer" : """이 질문에 추가 질문이 필요합니까? : 예 추가 질문 : 스티브 잡스는 몇 살에 사망했습니까? 중간 답변 : 스티브 잡스는 56세에 사망했습니다. 추가 질문 : 아인슈타인은 몇 살에 사망했습니까? 중간 답변 : 아인슈타인은 76세에 사망했습니다. 최종 답변 : 아인슈타인 """, }, { "question" : "네이버의 창립자는 언제 태어났습니까?", "answer" : """이 질문에 추가 질문이 필요합니까? : 예 추가 질문 : 네이버의 창립자는 누구입니까? 중간 답변 : 네이버는 이해진에 의해 창립되었습니다. 추가 질문 : 이해진은 언제 태어났습니까? 중간 답변 : 이해진은 1967년 6월 22일에 태어났습니다. 최종 답변 : 1967년 6월 22일 """, }, { "question" : "율곡 이이의 어머니가 태어난 해의 통치하던 왕은 누구입니까?", "answer" : """이 질문에 추가 질문이 필요합니까? : 예 추가 질문 : 율곡 이이의 어머니는 누구입니까? 중간 답변 : 율곡 이이의 어머니는 신사임당입니다. 추가 질문 : 신사임당은 언제 태어났습니까? 중간 답변 : 신사임당은 1504년에 태어났습니다. 추가 질문 : 1504년에 조선을 통치한 왕은 누구입니까? 중간 답변 : 1504년에 조선을 통치한 왕은 연산군입니다. 최종 답변 : 연산군 """, }, { "question" : "올드보이와 기생충의 감독이 같은 나라 출신입니까?", "answer" : """이 질문에 추가 질문이 필요합니까? : 예 추가 질문 : 올드보이의 감독은 누구입니까? 중간 답변 : 올드보이의 감독은 박찬욱입니다. 추가 질문 : 박찬욱은 어느 나라 출신입니까? 중간 답변 : 박찬욱은 대한민국 출신입니다. 추가 질문 : 기생충의 감독은 누구입니까? 중간 답변 : 기생충의 감독은 봉준호입니다. 추가 질문 : 봉준호는 어느 나라 출신입니까? 중간 답변 : 봉준호는 대한민국 출신입니다. 최종 답변 : 예 """, }, ] openAIEmbeddings = OpenAIEmbeddings() chroma = Chroma("example_selector", openAIEmbeddings) semanticSimilarityExampleSelector = SemanticSimilarityExampleSelector.from_examples(exampleDictionaryList, openAIEmbeddings, Chroma, k = 1) selectedExampleDictionaryList = semanticSimilarityExampleSelector.select_examples({"question" : "Google이 창립된 연도에 Bill Gates의 나이는 몇 살인가요?"}) print(selectedExampleDictionaryList) """ [{'answer': '이 질문에 추가 질문이 필요합니까? : 예\n추가 질문 : 네이버의 창립자는 누구입니까?\n중간 답변 : 네이버는 이해진에 의해 창립되었습니다.\n추가 질문 : 이해진은 언제 태어났습니까?\n중간 답변 : 이해진은 1967년 6월 22일에 태어났습니다.\n최종 답변 : 1967년 6월 22일\n', 'question': '네이버의 창립자는 언제 태어났습니까?'}] """ |
▶ 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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
annotated-types==0.7.0 anyio==4.8.0 asgiref==3.8.1 backoff==2.2.1 bcrypt==4.2.1 build==1.2.2.post1 cachetools==5.5.0 certifi==2024.12.14 charset-normalizer==3.4.1 chroma-hnswlib==0.7.6 chromadb==0.5.23 click==8.1.8 coloredlogs==15.0.1 Deprecated==1.2.15 distro==1.9.0 durationpy==0.9 exceptiongroup==1.2.2 fastapi==0.115.6 filelock==3.16.1 flatbuffers==24.12.23 fsspec==2024.12.0 google-auth==2.37.0 googleapis-common-protos==1.66.0 grpcio==1.69.0 h11==0.14.0 httpcore==1.0.7 httptools==0.6.4 httpx==0.28.1 huggingface-hub==0.27.1 humanfriendly==10.0 idna==3.10 importlib_metadata==8.5.0 importlib_resources==6.5.2 jiter==0.8.2 jsonpatch==1.33 jsonpointer==3.0.0 kubernetes==31.0.0 langchain-chroma==0.2.0 langchain-core==0.3.29 langchain-openai==0.2.14 langsmith==0.2.10 markdown-it-py==3.0.0 mdurl==0.1.2 mmh3==5.0.1 monotonic==1.6 mpmath==1.3.0 numpy==1.26.4 oauthlib==3.2.2 onnxruntime==1.20.1 openai==1.59.5 opentelemetry-api==1.29.0 opentelemetry-exporter-otlp-proto-common==1.29.0 opentelemetry-exporter-otlp-proto-grpc==1.29.0 opentelemetry-instrumentation==0.50b0 opentelemetry-instrumentation-asgi==0.50b0 opentelemetry-instrumentation-fastapi==0.50b0 opentelemetry-proto==1.29.0 opentelemetry-sdk==1.29.0 opentelemetry-semantic-conventions==0.50b0 opentelemetry-util-http==0.50b0 orjson==3.10.14 overrides==7.7.0 packaging==24.2 posthog==3.7.5 protobuf==5.29.3 pyasn1==0.6.1 pyasn1_modules==0.4.1 pydantic==2.10.4 pydantic_core==2.27.2 Pygments==2.19.1 PyPika==0.48.9 pyproject_hooks==1.2.0 python-dateutil==2.9.0.post0 python-dotenv==1.0.1 PyYAML==6.0.2 regex==2024.11.6 requests==2.32.3 requests-oauthlib==2.0.0 requests-toolbelt==1.0.0 rich==13.9.4 rsa==4.9 shellingham==1.5.4 six==1.17.0 sniffio==1.3.1 starlette==0.41.3 sympy==1.13.3 tenacity==9.0.0 tiktoken==0.8.0 tokenizers==0.20.3 tomli==2.2.1 tqdm==4.67.1 typer==0.15.1 typing_extensions==4.12.2 urllib3==2.3.0 uvicorn==0.34.0 uvloop==0.21.0 watchfiles==1.0.3 websocket-client==1.8.0 websockets==14.1 wrapt==1.17.0 zipp==3.21.0 |
※ pip install python-dotenv langchain-openai langchain-chroma 명령을 실행했다.