■ NGramOverlapExampleSelector 클래스를 사용해 NGRAM 중첩 예제 선택기를 설정하는 방법을 보여준다.
※ NGramOverlapExampleSelector는 ngram 중첩 점수에 따라 입력과 가장 유사한 예를 기준으로 예를 선택하고 순서를 지정한다.
※ ngram 중첩 점수는 0.0에서 1.0 사이의 부동 소수점이다.
※ 선택기를 사용하면 임계값 점수를 설정할 수 있다.
※ ngram 중첩 점수가 임계값보다 작거나 같은 예시는 제외된다.
※ 임계값은 기본적으로 -1.0으로 설정되어 있으므로 예제를 제외하지 않고 재정렬만 한다.
※ 임계값을 0.0으로 설정하면 입력과 ngram이 겹치지 않는 예가 제외된다.
▶ 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 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 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
from langchain_community.example_selectors import NGramOverlapExampleSelector from langchain_core.prompts import FewShotPromptTemplate from langchain_core.prompts import PromptTemplate examplePromptTemplate = PromptTemplate( input_variables = ["input", "output"], template = "Input : {input}\nOutput : {output}" ) exampleDictionaryList = [ {"input" : "See Spot run.", "output" : "Ver correr a Spot."}, {"input" : "My dog barks.", "output" : "Mi perro ladra." }, {"input" : "Spot can run.", "output" : "Spot puede correr."} ] nGramOverlapExampleSelector = NGramOverlapExampleSelector( # 선택할 수 있는 예제이다. examples = exampleDictionaryList, # 예제의 형식을 지정하는 데 사용되는 PromptTemplate이다. example_prompt = examplePromptTemplate, # 선택기가 중지되는 임계값이다. # 기본적으로 -1.0으로 설정된다. threshold = -1.0, # 음수 임계값의 경우 : # 선택기는 ngram 중첩 점수를 기준으로 예제를 정렬하고 아무것도 제외하지 않는다. # 1.0보다 큰 임계값의 경우 : # 선택기는 모든 예를 제외하고 빈 목록을 반환한다. # 임계값이 0.0인 경우 : # 선택기는 ngram 중복 점수를 기준으로 예제를 정렬하고 입력과 ngram 중복이 없는 예제를 제외한다. ) fewShotPromptTemplate = FewShotPromptTemplate( # 예제 대신 exampleSelector를 제공한다. example_selector = nGramOverlapExampleSelector, example_prompt = examplePromptTemplate, prefix = "Give the Spanish translation of every input", suffix = "Input : {sentence}\nOutput :", input_variables = ["sentence"] ) promptString1 = fewShotPromptTemplate.format(sentence="Spot can run fast.") print(promptString1) """ Give the Spanish translation of every input Input : Spot can run. Output : Spot puede correr. Input : See Spot run. Output : Ver correr a Spot. Input : My dog barks. Output : Mi perro ladra. Input : Spot can run fast. Output : """ newExampleDictionary = {"input" : "Spot plays fetch.", "output" : "Spot juega a buscar."} nGramOverlapExampleSelector.add_example(newExampleDictionary) promptString2 = fewShotPromptTemplate.format(sentence = "Spot can run fast.") print(promptString2) """ Give the Spanish translation of every input Input : Spot can run. Output : Spot puede correr. Input : See Spot run. Output : Ver correr a Spot. Input : Spot plays fetch. Output : Spot juega a buscar. Input : My dog barks. Output : Mi perro ladra. Input : Spot can run fast. Output : """ nGramOverlapExampleSelector.threshold = 0.0 promptString3 = fewShotPromptTemplate.format(sentence = "Spot can run fast.") print(promptString3) """ Give the Spanish translation of every input Input : Spot can run. Output : Spot puede correr. Input : See Spot run. Output : Ver correr a Spot. Input : Spot plays fetch. Output : Spot juega a buscar. Input : Spot can run fast. Output : """ nGramOverlapExampleSelector.threshold = 0.09 promptString4 = fewShotPromptTemplate.format(sentence = "Spot can play fetch.") print(promptString4) """ Give the Spanish translation of every input Input : Spot can run. Output : Spot puede correr. Input : Spot plays fetch. Output : Spot juega a buscar. Input : Spot can play fetch. Output : """ nGramOverlapExampleSelector.threshold = 1.0 + 1e-9 promptString5 = fewShotPromptTemplate.format(sentence = "Spot can play fetch.") print(promptString5) """ Give the Spanish translation of every input Input : Spot can play fetch. Output : """ |
▶ 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 |
aiohttp==3.9.5 aiosignal==1.3.1 annotated-types==0.7.0 async-timeout==4.0.3 attrs==23.2.0 certifi==2024.6.2 charset-normalizer==3.3.2 click==8.1.7 dataclasses-json==0.6.7 frozenlist==1.4.1 greenlet==3.0.3 idna==3.7 joblib==1.4.2 jsonpatch==1.33 jsonpointer==3.0.0 langchain==0.2.5 langchain-community==0.2.5 langchain-core==0.2.9 langchain-text-splitters==0.2.1 langsmith==0.1.81 marshmallow==3.21.3 multidict==6.0.5 mypy-extensions==1.0.0 nltk==3.8.1 numpy==1.26.4 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 SQLAlchemy==2.0.31 tenacity==8.4.1 tqdm==4.66.4 typing-inspect==0.9.0 typing_extensions==4.12.2 urllib3==2.2.2 yarl==1.9.4 |
※ pip install langchain langchain-community nltk 명령을 실행했다.