WildOjisan commited on
Commit
7194311
ยท
1 Parent(s): 5d46c73
Files changed (1) hide show
  1. routers/llm_router.py +47 -28
routers/llm_router.py CHANGED
@@ -14,13 +14,15 @@ router = APIRouter(
14
 
15
  @router.post("/askllm")
16
  def test_home(userquery: str = Form("")
17
- , selected_cards:str = Form("[]") ):
 
18
  try:
19
  cards=json.loads(selected_cards)
20
  card_text = "\n".join([
21
  f"- {card['position']} ์œ„์น˜: {card['name']} / {'์—ญ๋ฐฉํ–ฅ' if card['reversed'] else '์ •๋ฐฉํ–ฅ'}"
22
  for card in cards
23
  ])
 
24
  with get_connection() as conn:
25
  with conn.cursor() as cur:
26
  cur.execute("""
@@ -56,36 +58,53 @@ def test_home(userquery: str = Form("")
56
  """
57
  ๋‚ด์šฉ๋ฌผ. body ๋ผ๊ณ ๋„ ๋ถ€๋ฆ„.
58
  """
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
  payload = {
60
  "model": "openai-fast",
61
- "messages": [
62
- {
63
- "role": "system",
64
- "content": """
65
- ๋‹น์‹ ์€ ์นœ์ ˆํ•œ ํƒ€๋กœ ์ƒ๋‹ด์‚ฌ์ž…๋‹ˆ๋‹ค.
66
- ๋ฐ˜๋“œ์‹œ ํ•œ๊ตญ์–ด๋กœ ๋‹ต๋ณ€ํ•˜์„ธ์š”.
67
- ๋‹ต๋ณ€์€ 5๋ฌธ์žฅ ์ด๋‚ด๋กœ ์งง๊ฒŒ ํ•˜์„ธ์š”.
68
- ๋ณต์žกํ•œ ์„ค๋ช…์€ ํ•˜์ง€ ๋งˆ์„ธ์š”.
69
-
70
- ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ์นด๋“œ๋Š” ๊ณผ๊ฑฐ, ํ˜„์žฌ, ๋ฏธ๋ž˜ ์ˆœ์„œ์ž…๋‹ˆ๋‹ค.
71
- ๊ฐ ์นด๋“œ์˜ ์ •๋ฐฉํ–ฅ/์—ญ๋ฐฉํ–ฅ ์˜๋ฏธ๋ฅผ ๋ฐ˜์˜ํ•ด์„œ ๋‹ต๋ณ€ํ•˜์„ธ์š”.
72
- """
73
- },
74
- {
75
- "role": "user",
76
- "content": f"""
77
- ์‚ฌ์šฉ์ž ์งˆ๋ฌธ:
78
- {userquery}
79
-
80
- ์„ ํƒ๋œ ํƒ€๋กœ ์นด๋“œ:
81
- {card_text}
82
-
83
- ์œ„ ์งˆ๋ฌธ๊ณผ ์„ ํƒ๋œ ์นด๋“œ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์งง๊ฒŒ ํƒ€๋กœ ์ƒ๋‹ด์„ ํ•ด์ฃผ์„ธ์š”.
84
- """
85
- }
86
- ],
87
  "temperature": 0.8,
88
- "max_tokens": 4000,
89
  "stream": False
90
  }
91
 
 
14
 
15
  @router.post("/askllm")
16
  def test_home(userquery: str = Form("")
17
+ , selected_cards:str = Form("[]")
18
+ , chat_history:str=Form("[]") ):
19
  try:
20
  cards=json.loads(selected_cards)
21
  card_text = "\n".join([
22
  f"- {card['position']} ์œ„์น˜: {card['name']} / {'์—ญ๋ฐฉํ–ฅ' if card['reversed'] else '์ •๋ฐฉํ–ฅ'}"
23
  for card in cards
24
  ])
25
+ history=json.loads(chat_history)
26
  with get_connection() as conn:
27
  with conn.cursor() as cur:
28
  cur.execute("""
 
58
  """
59
  ๋‚ด์šฉ๋ฌผ. body ๋ผ๊ณ ๋„ ๋ถ€๋ฆ„.
60
  """
61
+ # 4. LLM์—๊ฒŒ ๋ณด๋‚ผ messages ๋งŒ๋“ค๊ธฐ
62
+ messages = [
63
+ {
64
+ "role": "system",
65
+ "content": """
66
+ ๋‹น์‹ ์€ ์นœ์ ˆํ•œ ํƒ€๋กœ ์ƒ๋‹ด์‚ฌ์ž…๋‹ˆ๋‹ค.
67
+ ๋ฐ˜๋“œ์‹œ ํ•œ๊ตญ์–ด๋กœ ๋‹ต๋ณ€ํ•˜์„ธ์š”.
68
+ ๋‹ต๋ณ€์€ 5๋ฌธ์žฅ ์ด๋‚ด๋กœ ์งง๊ฒŒ ํ•˜์„ธ์š”.
69
+ ๋ณต์žกํ•œ ์„ค๋ช…์€ ํ•˜์ง€ ๋งˆ์„ธ์š”.
70
+
71
+ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ์นด๋“œ๋Š” ๊ณผ๊ฑฐ, ํ˜„์žฌ, ๋ฏธ๋ž˜ ์ˆœ์„œ์ž…๋‹ˆ๋‹ค.
72
+ ๊ฐ ์นด๋“œ์˜ ์ •๋ฐฉํ–ฅ/์—ญ๋ฐฉํ–ฅ ์˜๋ฏธ๋ฅผ ๋ฐ˜์˜ํ•ด์„œ ๋‹ต๋ณ€ํ•˜์„ธ์š”.
73
+
74
+ ์ค‘์š”:
75
+ ์‚ฌ์šฉ์ž์˜ ์ตœ๊ทผ ๋Œ€ํ™” ํ๋ฆ„์„ ๋ฐ˜๋“œ์‹œ ๊ธฐ์–ตํ•˜๊ณ  ์ด์–ด์„œ ๋‹ต๋ณ€ํ•˜์„ธ์š”.
76
+ ์‚ฌ์šฉ์ž๊ฐ€ ์งง๊ฒŒ ๋˜๋ฌป๋Š” ๋ง์€ ์ด์ „ ์งˆ๋ฌธ๊ณผ ์ด์ „ ๋‹ต๋ณ€์„ ๊ธฐ์ค€์œผ๋กœ ํ•ด์„ํ•˜์„ธ์š”.
77
+ ์˜ˆ: "์ฒญ๋ฐ”์ง€ ์‚ฌ๋ผ๊ณ ?"๋Š” ์ด์ „์— ์˜ท ์ถ”์ฒœ ์ด์•ผ๊ธฐ๋ฅผ ํ–ˆ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.
78
+ """
79
+ }
80
+ ]
81
+
82
+ # 5. ์ด์ „ ๋Œ€ํ™” ๊ธฐ๋ก ์ถ”๊ฐ€
83
+ for msg in history:
84
+ messages.append({
85
+ "role": msg["role"],
86
+ "content": msg["content"]
87
+ })
88
+
89
+ # 6. ์ด๋ฒˆ ์‚ฌ์šฉ์ž ์งˆ๋ฌธ ์ถ”๊ฐ€
90
+ messages.append({
91
+ "role": "user",
92
+ "content": f"""
93
+ ์‚ฌ์šฉ์ž ์งˆ๋ฌธ:
94
+ {userquery}
95
+
96
+ ์„ ํƒ๋œ ํƒ€๋กœ ์นด๋“œ:
97
+ {card_text}
98
+
99
+ ์œ„ ์งˆ๋ฌธ๊ณผ ์„ ํƒ๋œ ์นด๋“œ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์งง๊ฒŒ ํƒ€๋กœ ์ƒ๋‹ด์„ ํ•ด์ฃผ์„ธ์š”.
100
+ """
101
+ })
102
+
103
  payload = {
104
  "model": "openai-fast",
105
+ "messages": messages,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
106
  "temperature": 0.8,
107
+ "max_tokens": 1000,
108
  "stream": False
109
  }
110