Sohyun Sim commited on
Commit
8a87758
1 Parent(s): e483d1b

add rule.md

Browse files
Files changed (4) hide show
  1. app.py +7 -6
  2. data/rule.md +8 -0
  3. src/functions.py +8 -2
  4. src/semantle.py +4 -4
app.py CHANGED
@@ -10,10 +10,10 @@ from src.functions import get_functions
10
  from src.utils import add_guess
11
 
12
  GPT_MODEL = "gpt-3.5-turbo"
13
- TITLE = "やりとりSemantle"
14
 
15
- system_content = task_background+task_description
16
- system_message = [{"role": "system", "content": system_content}]
17
 
18
  def _execute_function(function_call, chat_messages):
19
  # Step 3: call the function
@@ -46,10 +46,12 @@ def _execute_function(function_call, chat_messages):
46
 
47
  def create_chat(key, user_input):
48
  openai.api_key = key
49
- chat_messages = [{"role": "user", "content": user_input}]
 
 
50
  response = openai.ChatCompletion.create(
51
  model=GPT_MODEL,
52
- messages=system_message+chat_messages,
53
  functions=get_functions()
54
  )
55
  response_message = response.choices[0].message.to_dict()
@@ -64,7 +66,6 @@ def create_chat(key, user_input):
64
  return chat_messages[-1]
65
 
66
  with gr.Blocks() as demo:
67
-
68
  with gr.Row():
69
  gr.Markdown(
70
  """
 
10
  from src.utils import add_guess
11
 
12
  GPT_MODEL = "gpt-3.5-turbo"
13
+ TITLE = "やりとりイミトル"
14
 
15
+ with open("data/rule.md", "r", encoding="utf-8") as f:
16
+ RULEBOOK = "\n".join(f.readlines())
17
 
18
  def _execute_function(function_call, chat_messages):
19
  # Step 3: call the function
 
46
 
47
  def create_chat(key, user_input):
48
  openai.api_key = key
49
+ chat_messages = [
50
+ {"role": "system", "content": "あなたはiritoruというゲームの進行役です。ユーザーが答えを言ったり、ゲームに関するリクエストをしたら、短くても丁寧に答えてください。"},
51
+ {"role": "user", "content": user_input}]
52
  response = openai.ChatCompletion.create(
53
  model=GPT_MODEL,
54
+ messages=chat_messages,
55
  functions=get_functions()
56
  )
57
  response_message = response.choices[0].message.to_dict()
 
66
  return chat_messages[-1]
67
 
68
  with gr.Blocks() as demo:
 
69
  with gr.Row():
70
  gr.Markdown(
71
  """
data/rule.md ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ # イミトル(Imitoru)
2
+
3
+ ## ゲームの遊び方
4
+ 今日の言葉を当てるゲームです。 正解と推測される単語を答えると、正解かどうかがわかります。正解でない場合、正解に近い度合いと順位がわかります。正解に近い程度とは単語の意味や文脈、単語の言語的特性などによって決まります。 推測した単語の近い度合いと順位を参考にして、答えを当て続けてみてください。
5
+ もし正解が難しかったり、ゲームのルールがわかりにくい場合は、ヒントを求めることができます。正解を直接聞くことはできませんが、正解に関する様々な情報を得ることができます。
6
+
7
+ ## 正解の単語について
8
+ 正解の単語には、固有名詞、助詞、感動詞、及び記号以外の品詞の基本形の単語が含まれています。 正解の単語は、よく使われる表記に従っています。ただし推理する場合は、すべての表記を試すことができます。 同じ単語でも、表記によって類似度が異なる場合は、単語が使用される文脈が反映されていると考えることもできます。 ひらがなやカタカナの表記をする場合は、同音異字の場合にも注意してください。
src/functions.py CHANGED
@@ -47,13 +47,19 @@ update_history = {"name": "update_history",
47
  },
48
  "guess_history": {
49
  "type": "object",
50
- "description": "A dataframe containing the guessed words and its xore and rank in a row."
51
  }
52
  },
53
  "required": ["current_guess", "guess_history"]
54
  }}
 
 
 
 
 
 
55
 
56
 
57
  def get_functions():
58
- functions = [guess_word, lookup_answer]
59
  return functions
 
47
  },
48
  "guess_history": {
49
  "type": "object",
50
+ "description": "A dataframe containing the guessed words and its score and rank in a row."
51
  }
52
  },
53
  "required": ["current_guess", "guess_history"]
54
  }}
55
+ retrieve_rule = {"name": "retrieve_rule",
56
+ "description": "Use this function to retrieve the game rule for clarification of your response.",
57
+ "parametrs": {
58
+ "type": "object",
59
+ "properties": {},
60
+ }}
61
 
62
 
63
  def get_functions():
64
+ functions = [guess_word, lookup_answer, retrieve_puzzle_num, update_history, retrieve_rule]
65
  return functions
src/semantle.py CHANGED
@@ -4,7 +4,7 @@ import requests
4
 
5
  def get_secret(puzzle_num: int):
6
  request_url = f"https://semantoru.com/yesterday/{puzzle_num+1}"
7
- response = requests.get(request_url)
8
  if response.status_code == 200:
9
  return response.content
10
  else:
@@ -12,7 +12,7 @@ def get_secret(puzzle_num: int):
12
 
13
  def get_guess(word: str, puzzle_num: int):
14
  request_url = f"https://semantoru.com/guess/{puzzle_num}/{word}"
15
- response = requests.get(request_url)
16
  print(response.status_code)
17
  if response.status_code == 200:
18
  return response.json()
@@ -22,5 +22,5 @@ def get_guess(word: str, puzzle_num: int):
22
  "rank": None}
23
 
24
  def get_puzzle_num():
25
- FIRST_DAY = date(2023, 4, 2)
26
- return (utc.localize(datetime.utcnow()).astimezone(timezone('Asia/Tokyo')).date() - FIRST_DAY).days
 
4
 
5
  def get_secret(puzzle_num: int):
6
  request_url = f"https://semantoru.com/yesterday/{puzzle_num+1}"
7
+ response = requests.get(request_url, timeout=5)
8
  if response.status_code == 200:
9
  return response.content
10
  else:
 
12
 
13
  def get_guess(word: str, puzzle_num: int):
14
  request_url = f"https://semantoru.com/guess/{puzzle_num}/{word}"
15
+ response = requests.get(request_url, timeout=5)
16
  print(response.status_code)
17
  if response.status_code == 200:
18
  return response.json()
 
22
  "rank": None}
23
 
24
  def get_puzzle_num():
25
+ fisrt_day = date(2023, 4, 2)
26
+ return (utc.localize(datetime.utcnow()).astimezone(timezone('Asia/Tokyo')).date() - fisrt_day).days