Skip to content

Commit 80174dc

Browse files
authored
Merge pull request #14 from teddynote/main
[Title] 연습용파일
2 parents 6322440 + 957e437 commit 80174dc

File tree

1 file changed

+156
-0
lines changed

1 file changed

+156
-0
lines changed
Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "markdown",
5+
"metadata": {},
6+
"source": [
7+
"# 연습용 파일\n",
8+
"\n",
9+
"코랩 링크가 누락 되었습니다.\n",
10+
"\n",
11+
"colab.research.google.com/"
12+
]
13+
},
14+
{
15+
"cell_type": "markdown",
16+
"metadata": {},
17+
"source": [
18+
"# ConversationTokenBufferMemory\n",
19+
"\n",
20+
"`ConversationTokenBufferMemory` 는 최근 대화의 히스토리를 버퍼를 메모리에 보관하고, 대화의 개수가 아닌 **토큰 길이** 를 사용하여 대화내용을 플러시(flush)할 시기를 결정합니다.\n",
21+
"\n",
22+
"이곳에 추가 설명을 남겨주세요.\n"
23+
]
24+
},
25+
{
26+
"cell_type": "code",
27+
"execution_count": null,
28+
"metadata": {},
29+
"outputs": [],
30+
"source": [
31+
"# API KEY를 환경변수로 관리하기 위한 설정 파일\n",
32+
"from dotenv import load_dotenv\n",
33+
"\n",
34+
"# API KEY 정보로드\n",
35+
"load_dotenv()"
36+
]
37+
},
38+
{
39+
"cell_type": "markdown",
40+
"metadata": {},
41+
"source": [
42+
"- `max_token_limit`: 대화 내용을 저장할 최대 토큰의 길이를 설정합니다.\n"
43+
]
44+
},
45+
{
46+
"cell_type": "code",
47+
"execution_count": null,
48+
"metadata": {},
49+
"outputs": [],
50+
"source": [
51+
"from langchain.memory import ConversationTokenBufferMemory\n",
52+
"from langchain_openai import ChatOpenAI\n",
53+
"\n",
54+
"\n",
55+
"# LLM 모델 생성\n",
56+
"llm = ChatOpenAI(model_name=\"gpt-4o\")\n",
57+
"\n",
58+
"# 메모리 설정\n",
59+
"memory = ConversationTokenBufferMemory(\n",
60+
" llm=llm, max_token_limit=150, return_messages=True # 최대 토큰 길이를 50개로 제한\n",
61+
")"
62+
]
63+
},
64+
{
65+
"cell_type": "markdown",
66+
"metadata": {},
67+
"source": [
68+
"임의의 대화를 추가합니다.\n"
69+
]
70+
},
71+
{
72+
"cell_type": "code",
73+
"execution_count": null,
74+
"metadata": {},
75+
"outputs": [],
76+
"source": [
77+
"memory.save_context(\n",
78+
" inputs={\n",
79+
" \"human\": \"안녕하세요, 저는 최근에 여러분 회사의 공작 기계를 구매했습니다. 설치 방법을 알려주실 수 있나요?\"\n",
80+
" },\n",
81+
" outputs={\n",
82+
" \"ai\": \"안녕하세요! 구매해 주셔서 감사합니다. 해당 기계 모델 번호를 알려주시겠어요?\"\n",
83+
" },\n",
84+
")\n",
85+
"memory.save_context(\n",
86+
" inputs={\"human\": \"네, 모델 번호는 XG-200입니다.\"},\n",
87+
" outputs={\n",
88+
" \"ai\": \"감사합니다. XG-200 모델의 설치 안내를 도와드리겠습니다. 먼저, 설치할 장소의 전원 공급 상태를 확인해주세요. 기계는 220V 전원이 필요합니다.\"\n",
89+
" },\n",
90+
")\n",
91+
"memory.save_context(\n",
92+
" inputs={\"human\": \"전원은 확인했습니다. 다음 단계는 무엇인가요?\"},\n",
93+
" outputs={\n",
94+
" \"ai\": \"좋습니다. 다음으로, 기계를 평평하고 안정된 바닥에 배치해 주세요. 이후, 제공된 사용자 매뉴얼에 따라 케이블 연결을 진행해 주시기 바랍니다.\"\n",
95+
" },\n",
96+
")\n",
97+
"memory.save_context(\n",
98+
" inputs={\"human\": \"연결은 어떻게 하나요?\"},\n",
99+
" outputs={\n",
100+
" \"ai\": \"매뉴얼의 5페이지를 참조해 주세요. 케이블 연결에 관한 상세한 지침이 있습니다. 이 과정에서 어려움이 있으시면 추가적으로 도와드리겠습니다.\"\n",
101+
" },\n",
102+
")\n",
103+
"memory.save_context(\n",
104+
" inputs={\"human\": \"설치가 완료되면 어떻게 해야 하나요?\"},\n",
105+
" outputs={\n",
106+
" \"ai\": \"설치가 완료되면, 전원을 켜고 초기 구동 테스트를 진행해 주시기 바랍니다. 테스트 절차는 매뉴얼의 10페이지에 설명되어 있습니다. 만약 기계에 이상이 있거나 추가적인 지원이 필요하시면 언제든지 연락 주시기 바랍니다.\"\n",
107+
" },\n",
108+
")\n",
109+
"memory.save_context(\n",
110+
" inputs={\"human\": \"감사합니다, 도움이 많이 되었어요!\"},\n",
111+
" outputs={\n",
112+
" \"ai\": \"언제든지 도와드릴 준비가 되어 있습니다. 추가적인 질문이나 지원이 필요하시면 언제든지 문의해 주세요. 좋은 하루 되세요!\"\n",
113+
" },\n",
114+
")"
115+
]
116+
},
117+
{
118+
"cell_type": "markdown",
119+
"metadata": {},
120+
"source": [
121+
"최대 토큰의 길이를 **150** 으로 설정하고 대화를 저장했을 때 어떻게 동작하는지 확인해 보겠습니다.\n"
122+
]
123+
},
124+
{
125+
"cell_type": "code",
126+
"execution_count": null,
127+
"metadata": {},
128+
"outputs": [],
129+
"source": [
130+
"# 대화내용을 확인합니다.\n",
131+
"memory.load_memory_variables({})[\"history\"]"
132+
]
133+
}
134+
],
135+
"metadata": {
136+
"kernelspec": {
137+
"display_name": "py-test",
138+
"language": "python",
139+
"name": "python3"
140+
},
141+
"language_info": {
142+
"codemirror_mode": {
143+
"name": "ipython",
144+
"version": 3
145+
},
146+
"file_extension": ".py",
147+
"mimetype": "text/x-python",
148+
"name": "python",
149+
"nbconvert_exporter": "python",
150+
"pygments_lexer": "ipython3",
151+
"version": "3.10.13"
152+
}
153+
},
154+
"nbformat": 4,
155+
"nbformat_minor": 2
156+
}

0 commit comments

Comments
 (0)