4. 대화 시작 시에 한 번에 모든 지식을 제공하기

본 페이지는 1:01:21 지점부터 1:16:14 지점까지 보시면 됩니다.

4.1. OpenAI LLM에게 지식 제공없이 그냥 물어봅시다.

OpenAI API 호출을 위해 openai 라이브러리를 설치합니다.

1pip install -U openai django-environ

OpenAI 공식문서에서 텍스트를 생성하는 예시를 확인하실 수 있습니다.

예시 코드를 참고해서 아래와 같이 관련 지식을 제공하지 않고 질문을 해보겠습니다.

넌 AI Assistant. 모르는 건 모른다고 대답.

빽다방 카페인이 높은 음료와 가격은?

oneshot.py
 1import openai
 2from environ import Env
 3
 4env = Env()
 5env.read_env()  # .env 파일을 환경변수로서 로딩
 6
 7
 8def print_prices(input_tokens: int, output_tokens: int) -> None:
 9    input_price = (input_tokens * 0.150 / 1_000_000) * 1_500
10    output_price = (output_tokens * 0.600 / 1_000_000) * 1_500
11    print("input: tokens {}, krw {:.4f}".format(input_tokens, input_price))
12    print("output: tokens {}, krw {:4f}".format(output_tokens, output_price))
13
14
15def make_ai_message(question: str) -> str:
16    client = openai.Client()  # OPENAI_API_KEY 환경변수를 디폴트로 참조
17
18    res = client.chat.completions.create(
19        messages=[
20            { "role": "user", "content": question },
21        ],
22        model="gpt-4o-mini",
23        temperature=0,
24    )
25    print_prices(res.usage.prompt_tokens, res.usage.completion_tokens)
26    return res.choices[0].message.content
27
28
29def main():
30    question = "넌 AI Assistant. 모르는 건 모른다고 대답.\n\n빽다방 카페인이 높은 음료와 가격은?"
31    ai_message = make_ai_message(question)
32    print(ai_message)
33
34
35if __name__ == "__main__":
36    main()

실행해보면, 아래와 같이 빽다방 정보가 없다고 AI가 대답합니다. AI는 빽다방에 대한 정보가 없기 때문이죠. 이 응답을 받기 위해 사용된 비용은 총 0.061원입니다.

넌 AI Assistant. 모르는 건 모른다고 대답.

빽다방 카페인이 높은 음료와 가격은?

input: tokens 35, krw 0.0079

output: tokens 59, krw 0.053100

죄송하지만, 빽다방의 특정 음료와 가격에 대한 정보는 가지고 있지 않습니다. 빽다방의 메뉴와 가격은 매장이나 공식 웹사이트에서 확인하시는 것이 가장 정확합니다. 다른 질문이 있으시면 도와드리겠습니다!

4.2. 관련 지식과 함께 물어봅시다.

이제 질문할 때, 다음과 같이 빽다방 관련 지식을 함께 질문해보겠습니다.

넌 AI Assistant. 모르는 건 모른다고 대답.

[[빽다방 메뉴 정보]]

1. 아이스티샷추가(아.샷.추)
  - SNS에서 더 유명한 꿀팁 조합 음료 :) 상콤달콤한 복숭아맛 아이스티에 진한 에스프레소 샷이 어우러져 환상조합
  - 가격: 3800원

2. 바닐라라떼(ICED)
  - 부드러운 우유와 달콤하고 은은한 바닐라가 조화를 이루는 음료
  - 가격: 4200원

3. 사라다빵
  - 빽다방의 대표메뉴 :) 추억의 감자 사라다빵
  - 가격: 3900원

4. 빽사이즈 아메리카노(ICED)
  - 에스프레소 4샷이 들어가 깊고 진한 맛의 아메리카노
  - 가격: 3500원

5. 빽사이즈 원조커피(ICED)
  - 빽다방의 BEST메뉴를 더 크게 즐겨보세요 :) [주의. 564mg 고카페인으로 카페인에 민감한 어린이, 임산부는 섭취에 주의바랍니다]
  - 가격: 4000원

6. 빽사이즈 원조커피 제로슈거(ICED)
  - 빽다방의 BEST메뉴를 더 크게, 제로슈거로 즐겨보세요 :) [주의. 686mg 고카페인으로 카페인에 민감한 어린이, 임산부는 섭취에 주의바랍니다]
  - 가격: 4000원

7. 빽사이즈 달콤아이스티(ICED)
  - 빽다방의 BEST메뉴를 더 크게 즐겨보세요 :) 시원한 복숭아맛 아이스티
  - 가격: 4300원

8. 빽사이즈 아이스티샷추가(ICED)
  - SNS에서 더 유명한 꿀팁 조합 음료 :) 상콤달콤한 복숭아맛 아이스티에 진한 에스프레소 2샷이 어우러져 환상조합
  - 가격: 4800원

9. 빽사이즈 아이스티 망고추가+노란빨대
  - SNS핫메뉴 아이스티에 망고를 한가득:)
  - 가격: 6300원

10. 빽사이즈 초코라떼(ICED)
  - 빽다방의 BEST메뉴를 더 크게 즐겨보세요 :) 진짜~완~전 진한 초코라떼
  - 가격 : 5500원

질문: 빽다방 카페인이 높은 음료와 가격은?

지식은 파이썬 소스코드에 넣지 않고 빽다방.txt 파일로 준비했습니다. 빽다방 메뉴 10개에 대한 지식을 담고 있습니다. 이 파일을 다운받아서 파이썬 소스코드와 같은 디렉토리에 넣어주세요.

파이썬에서는 open 함수를 통해 파일을 열어서 파일 내용을 읽어올 수 있습니다. 문자열 조합도 이렇게 f-string 문법을 통해 쉽게 할 수 있습니다.

 1# 생략
 2
 3def main():
 4    지식 = open("빽다방.txt", "rt", encoding="utf-8").read()
 5
 6    question = f"""넌 AI Assistant. 모르는 건 모른다고 대답.
 7
 8[[빽다방 메뉴 정보]]
 9{지식}
10
11질문: 빽다방 카페인이 높은 음료와 가격은?"""
12    ai_message = make_ai_message(question)
13    print(ai_message)
14
15# 생략

코드를 실행하고 그 응답을 받아보면 이렇게 고카페인 메뉴 안내가 정확함을 확인하실 수 있습니다. 질문과 함께 빽다방 메뉴 정보를 제공했기 때문에 제공한 정보에 기반해서 답변을 한 것이죠.

넌 AI Assistant. 모르는 건 모른다고 대답.

[[빽다방 메뉴 정보]]

1. 아이스티샷추가(아.샷.추)
  - SNS에서 더 유명한 꿀팁 조합 음료 :) 상콤달콤한 복숭아맛 아이스티에 진한 에스프레소 샷이 어우러져 환상조합
  - 가격: 3800원

2. 바닐라라떼(ICED)
  - 부드러운 우유와 달콤하고 은은한 바닐라가 조화를 이루는 음료
  - 가격: 4200원

3. 사라다빵
  - 빽다방의 대표메뉴 :) 추억의 감자 사라다빵
  - 가격: 3900원

4. 빽사이즈 아메리카노(ICED)
  - 에스프레소 4샷이 들어가 깊고 진한 맛의 아메리카노
  - 가격: 3500원

5. 빽사이즈 원조커피(ICED)
  - 빽다방의 BEST메뉴를 더 크게 즐겨보세요 :) [주의. 564mg 고카페인으로 카페인에 민감한 어린이, 임산부는 섭취에 주의바랍니다]
  - 가격: 4000원

6. 빽사이즈 원조커피 제로슈거(ICED)
  - 빽다방의 BEST메뉴를 더 크게, 제로슈거로 즐겨보세요 :) [주의. 686mg 고카페인으로 카페인에 민감한 어린이, 임산부는 섭취에 주의바랍니다]
  - 가격: 4000원

7. 빽사이즈 달콤아이스티(ICED)
  - 빽다방의 BEST메뉴를 더 크게 즐겨보세요 :) 시원한 복숭아맛 아이스티
  - 가격: 4300원

8. 빽사이즈 아이스티샷추가(ICED)
  - SNS에서 더 유명한 꿀팁 조합 음료 :) 상콤달콤한 복숭아맛 아이스티에 진한 에스프레소 2샷이 어우러져 환상조합
  - 가격: 4800원

9. 빽사이즈 아이스티 망고추가+노란빨대
  - SNS핫메뉴 아이스티에 망고를 한가득:)
  - 가격: 6300원

10. 빽사이즈 초코라떼(ICED)
  - 빽다방의 BEST메뉴를 더 크게 즐겨보세요 :) 진짜~완~전 진한 초코라떼
  - 가격 : 5500원

질문: 빽다방 카페인이 높은 음료와 가격은?
input: tokens 660, krw 0.1485

output: tokens 103, krw 0.092700

빽다방에서 카페인이 높은 음료는 다음과 같습니다:

1. **빽사이즈 원조커피(ICED)**
  - 카페인: 564mg
  - 가격: 4000원

2. **빽사이즈 원조커피 제로슈거(ICED)**
  - 카페인: 686mg
  - 가격: 4000원

이 두 음료가 카페인이 가장 높습니다.

4.3. 정리

지식을 제공하지 않았을 때에는 비용이 0.061원이었는 데, 이번에는 0.2412원입니다. 비용이 4배 증가했지만 정확한 답변을 받을 수 있었습니다.

지식의 양의 Context Window 제한을 넘어서지 않는다면, 대화 처음에 모든 지식을 전달하고 질문을 이어나갈 수 있습니다. 전체 지식의 크기가 작다면 간단하게 시도해볼 만한 방법입니다.

LLM API 가격은 더욱 저렴해질 것이기에 이 비용도 더욱 낮아질 것입니다.