Spaces:
Build error
Build error
claude 0-shot
Browse files- data/anthropic_metrics.csv +2 -0
- data/anthropic_results.csv +0 -0
- llm_toolkit/llm_utils.py +27 -2
- llm_toolkit/logical_reasoning_utils.py +6 -2
- notebooks/04c_OpenAI-o1.ipynb +0 -0
- notebooks/05_Few-shot_Prompting_Anthropic.ipynb +1 -0
- notebooks/05b_Anthropic-Models_analysis.ipynb +0 -0
- requirements.txt +3 -19
data/anthropic_metrics.csv
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
1 |
+
shots,model,run,accuracy,precision,recall,f1,ratio_valid_classifications
|
2 |
+
0,claude-3-5-sonnet-20240620,claude-3-5-sonnet-20240620/shots-00,0.698,0.7933748867472142,0.698,0.73047417384539,1.0
|
data/anthropic_results.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
llm_toolkit/llm_utils.py
CHANGED
@@ -9,6 +9,7 @@ from transformers import (
|
|
9 |
)
|
10 |
from tqdm import tqdm
|
11 |
from langchain_openai import ChatOpenAI
|
|
|
12 |
from langchain_core.prompts import ChatPromptTemplate
|
13 |
|
14 |
|
@@ -233,13 +234,14 @@ def print_row_details(df, indices=[0]):
|
|
233 |
print(f"{col}: {df[col].iloc[index]}")
|
234 |
|
235 |
|
236 |
-
def
|
237 |
user_prompt,
|
238 |
system_prompt=None,
|
239 |
model="gpt-4o-mini",
|
240 |
temperature=0,
|
241 |
max_tokens=None,
|
242 |
base_url=None,
|
|
|
243 |
):
|
244 |
llm = ChatOpenAI(
|
245 |
model=model,
|
@@ -248,7 +250,11 @@ def invoke_openai_api(
|
|
248 |
timeout=None,
|
249 |
max_retries=2,
|
250 |
base_url=base_url,
|
251 |
-
)
|
|
|
|
|
|
|
|
|
252 |
|
253 |
messages = [
|
254 |
(
|
@@ -272,3 +278,22 @@ def invoke_openai_api(
|
|
272 |
response = chain.invoke(input={})
|
273 |
|
274 |
return response.content
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
)
|
10 |
from tqdm import tqdm
|
11 |
from langchain_openai import ChatOpenAI
|
12 |
+
from langchain_anthropic import ChatAnthropic
|
13 |
from langchain_core.prompts import ChatPromptTemplate
|
14 |
|
15 |
|
|
|
234 |
print(f"{col}: {df[col].iloc[index]}")
|
235 |
|
236 |
|
237 |
+
def invoke_langchain(
|
238 |
user_prompt,
|
239 |
system_prompt=None,
|
240 |
model="gpt-4o-mini",
|
241 |
temperature=0,
|
242 |
max_tokens=None,
|
243 |
base_url=None,
|
244 |
+
is_openai=True,
|
245 |
):
|
246 |
llm = ChatOpenAI(
|
247 |
model=model,
|
|
|
250 |
timeout=None,
|
251 |
max_retries=2,
|
252 |
base_url=base_url,
|
253 |
+
) if is_openai else ChatAnthropic(model=model,
|
254 |
+
temperature=temperature,
|
255 |
+
max_tokens=max_tokens,
|
256 |
+
timeout=None,
|
257 |
+
max_retries=2)
|
258 |
|
259 |
messages = [
|
260 |
(
|
|
|
278 |
response = chain.invoke(input={})
|
279 |
|
280 |
return response.content
|
281 |
+
|
282 |
+
|
283 |
+
def invoke_openai_api(
|
284 |
+
user_prompt,
|
285 |
+
system_prompt=None,
|
286 |
+
model="gpt-4o-mini",
|
287 |
+
temperature=0,
|
288 |
+
max_tokens=None,
|
289 |
+
base_url=None,
|
290 |
+
):
|
291 |
+
return invoke_langchain(
|
292 |
+
user_prompt,
|
293 |
+
system_prompt=system_prompt,
|
294 |
+
model=model,
|
295 |
+
temperature=temperature,
|
296 |
+
max_tokens=max_tokens,
|
297 |
+
base_url=base_url,
|
298 |
+
is_openai=True,
|
299 |
+
)
|
llm_toolkit/logical_reasoning_utils.py
CHANGED
@@ -15,7 +15,7 @@ from sklearn.metrics import (
|
|
15 |
f1_score,
|
16 |
confusion_matrix,
|
17 |
)
|
18 |
-
from llm_toolkit.llm_utils import
|
19 |
|
20 |
|
21 |
print(f"loading {__file__}")
|
@@ -518,14 +518,16 @@ def reasoning_with_openai(
|
|
518 |
base_url=None,
|
519 |
temperature=0,
|
520 |
using_system_prompt=True,
|
|
|
521 |
):
|
522 |
-
return
|
523 |
user_prompt.format(row["puzzle"], row["truth"], row["text"]),
|
524 |
system_prompt=system_prompt if using_system_prompt else None,
|
525 |
max_tokens=max_tokens,
|
526 |
model=model,
|
527 |
base_url=base_url,
|
528 |
temperature=temperature,
|
|
|
529 |
)
|
530 |
|
531 |
|
@@ -545,6 +547,7 @@ def eval_openai(
|
|
545 |
total = len(eval_dataset)
|
546 |
predictions = []
|
547 |
is_using_o1 = "o1" in model
|
|
|
548 |
|
549 |
for i in tqdm(range(total)):
|
550 |
output = reasoning_with_openai(
|
@@ -554,6 +557,7 @@ def eval_openai(
|
|
554 |
max_tokens=None if is_using_o1 else max_new_tokens,
|
555 |
temperature=1 if is_using_o1 else 0,
|
556 |
using_system_prompt=not is_using_o1,
|
|
|
557 |
)
|
558 |
predictions.append(output)
|
559 |
|
|
|
15 |
f1_score,
|
16 |
confusion_matrix,
|
17 |
)
|
18 |
+
from llm_toolkit.llm_utils import invoke_langchain
|
19 |
|
20 |
|
21 |
print(f"loading {__file__}")
|
|
|
518 |
base_url=None,
|
519 |
temperature=0,
|
520 |
using_system_prompt=True,
|
521 |
+
is_openai=True,
|
522 |
):
|
523 |
+
return invoke_langchain(
|
524 |
user_prompt.format(row["puzzle"], row["truth"], row["text"]),
|
525 |
system_prompt=system_prompt if using_system_prompt else None,
|
526 |
max_tokens=max_tokens,
|
527 |
model=model,
|
528 |
base_url=base_url,
|
529 |
temperature=temperature,
|
530 |
+
is_openai=is_openai,
|
531 |
)
|
532 |
|
533 |
|
|
|
547 |
total = len(eval_dataset)
|
548 |
predictions = []
|
549 |
is_using_o1 = "o1" in model
|
550 |
+
is_openai = "claude" not in model
|
551 |
|
552 |
for i in tqdm(range(total)):
|
553 |
output = reasoning_with_openai(
|
|
|
557 |
max_tokens=None if is_using_o1 else max_new_tokens,
|
558 |
temperature=1 if is_using_o1 else 0,
|
559 |
using_system_prompt=not is_using_o1,
|
560 |
+
is_openai=is_openai,
|
561 |
)
|
562 |
predictions.append(output)
|
563 |
|
notebooks/04c_OpenAI-o1.ipynb
CHANGED
The diff for this file is too large to render.
See raw diff
|
|
notebooks/05_Few-shot_Prompting_Anthropic.ipynb
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
{"cells":[{"cell_type":"code","execution_count":1,"metadata":{"application/vnd.databricks.v1+cell":{"cellMetadata":{},"inputWidgets":{},"nuid":"0ea8b46b-839b-445b-8043-ccdf4e920ace","showTitle":false,"title":""},"id":"YLH80COBzi_F"},"outputs":[],"source":["%load_ext autoreload\n","%autoreload 2"]},{"cell_type":"code","execution_count":2,"metadata":{"id":"63B5exAuzq4M"},"outputs":[],"source":["from pathlib import Path\n","\n","if \"workding_dir\" not in locals():\n"," try:\n"," from google.colab import drive\n"," drive.mount('/content/drive')\n"," workding_dir = \"/content/drive/MyDrive/logical-reasoning/\"\n"," except ModuleNotFoundError:\n"," workding_dir = str(Path.cwd().parent)"]},{"cell_type":"code","execution_count":3,"metadata":{"executionInfo":{"elapsed":368,"status":"ok","timestamp":1719461634865,"user":{"displayName":"Donghao Huang","userId":"00463591218503521679"},"user_tz":-480},"id":"zFulf0bg0H-9","outputId":"debdd535-c828-40b9-efc0-8a180e5830dd"},"outputs":[{"name":"stdout","output_type":"stream","text":["workding dir: d:\\code\\projects\\logical-reasoning\n"]}],"source":["import os\n","import sys\n","\n","os.chdir(workding_dir)\n","sys.path.append(workding_dir)\n","print(\"workding dir:\", workding_dir)"]},{"cell_type":"code","execution_count":4,"metadata":{"application/vnd.databricks.v1+cell":{"cellMetadata":{},"inputWidgets":{},"nuid":"9f67ec60-2f24-411c-84eb-0dd664b44775","showTitle":false,"title":""},"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":589,"status":"ok","timestamp":1719462011879,"user":{"displayName":"Donghao Huang","userId":"00463591218503521679"},"user_tz":-480},"id":"DIUiweYYzi_I","outputId":"e16e9247-9077-4b0c-f8ea-17059f05a1c4"},"outputs":[{"name":"stdout","output_type":"stream","text":["loading env vars from: d:\\code\\projects\\logical-reasoning\\.env\n"]},{"data":{"text/plain":["True"]},"execution_count":4,"metadata":{},"output_type":"execute_result"}],"source":["from dotenv import find_dotenv, load_dotenv\n","\n","found_dotenv = find_dotenv(\".env\")\n","\n","if len(found_dotenv) == 0:\n"," found_dotenv = find_dotenv(\".env.example\")\n","print(f\"loading env vars from: {found_dotenv}\")\n","load_dotenv(found_dotenv, override=True)"]},{"cell_type":"code","execution_count":5,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["claude-3-5-sonnet-20240620 datasets/mgtv data/anthropic_results.csv 16\n"]}],"source":["import os\n","\n","model_name = os.getenv(\"MODEL_NAME\")\n","data_path = os.getenv(\"LOGICAL_REASONING_DATA_PATH\")\n","results_path = os.getenv(\"LOGICAL_REASONING_RESULTS_PATH\")\n","max_new_tokens = int(os.getenv(\"MAX_NEW_TOKENS\", 2048))\n","\n","print(model_name, data_path, results_path, max_new_tokens)"]},{"cell_type":"code","execution_count":6,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["loading d:\\code\\projects\\logical-reasoning\\llm_toolkit\\logical_reasoning_utils.py\n"]}],"source":["from llm_toolkit.llm_utils import *\n","from llm_toolkit.logical_reasoning_utils import *"]},{"cell_type":"code","execution_count":7,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["loading train/test data files\n","DatasetDict({\n"," train: Dataset({\n"," features: ['text', 'label', 'answer', 'title', 'puzzle', 'truth'],\n"," num_rows: 25000\n"," })\n"," test: Dataset({\n"," features: ['text', 'label', 'answer', 'title', 'puzzle', 'truth'],\n"," num_rows: 3000\n"," })\n","})\n","num_shots: 10\n","labels: ['不是' '不重要' '是' '问法错误' '回答正确']\n","P2_few_shot: 你是一个情景猜谜游戏的主持人。游戏规则如下:\n","\n","1. 参与者会得到一个谜面,谜面会描述一个简单又难以理解的事件。\n","2. 主持人知道谜底,谜底是谜面的答案。\n","3. 参与者可以询问任何封闭式问题来找寻事件的真相。\n","4. 对于每个问题,主持人将根据实际情况回答以下五个选项之一:是、不是、不重要、回答正确、问法错误。各回答的判断标准如下:\n"," - 若谜面和谜底能找到问题的答案,回答:是或者不是\n"," - 若谜面和谜底不能直接或者间接推断出问题的答案,回答:不重要\n"," - 若参与者提问不是一个封闭式问题或者问题难以理解,回答:问法错误\n"," - 若参与者提问基本还原了谜底真相,回答:回答正确\n","5. 回答中不能添加任何其它信息,也不能省略选项中的任何一个字。例如,不可以把“不是”省略成“不”。\n","\n","请严格按照这些规则回答参与者提出的问题。\n","\n","示例输入和输出: \n","谜面: 在甄家村里,有一个古老的传说:每年南瓜丰收的季节,南瓜田里总有一个最大的南瓜会不翼而飞,村民们对此现象困惑不解。请找出南瓜失踪背后的原因。\n","谜底: 真相原来与一位年迈的农夫有关。这位农夫年轻时,曾与一位美丽的姑娘相恋。他们约��在南瓜丰收的季节结婚。然而,命运弄人,姑娘在婚礼前的一场意外中离世。悲伤的农夫为了纪念心爱的姑娘,每年都会将最大的南瓜偷走,放到姑娘的墓前,以此寄托自己的哀思。这一行为延续了多年,成为了乡村里一个神秘的传说。\n","参与者提出的问题: 偷的人信神吗\n","回答: 不是\n","\n","谜面: 在甄家村里,有一个古老的传说:每年南瓜丰收的季节,南瓜田里总有一个最大的南瓜会不翼而飞,村民们对此现象困惑不解。请找出南瓜失踪背后的原因。\n","谜底: 真相原来与一位年迈的农夫有关。这位农夫年轻时,曾与一位美丽的姑娘相恋。他们约定在南瓜丰收的季节结婚。然而,命运弄人,姑娘在婚礼前的一场意外中离世。悲伤的农夫为了纪念心爱的姑娘,每年都会将最大的南瓜偷走,放到姑娘的墓前,以此寄托自己的哀思。这一行为延续了多年,成为了乡村里一个神秘的传说。\n","参与者提出的问题: 村庄里的人喜欢南瓜嘛\n","回答: 不重要\n","\n","谜面: 在甄家村里,有一个古老的传说:每年南瓜丰收的季节,南瓜田里总有一个最大的南瓜会不翼而飞,村民们对此现象困惑不解。请找出南瓜失踪背后的原因。\n","谜底: 真相原来与一位年迈的农夫有关。这位农夫年轻时,曾与一位美丽的姑娘相恋。他们约定在南瓜丰收的季节结婚。然而,命运弄人,姑娘在婚礼前的一场意外中离世。悲伤的农夫为了纪念心爱的姑娘,每年都会将最大的南瓜偷走,放到姑娘的墓前,以此寄托自己的哀思。这一行为延续了多年,成为了乡村里一个神秘的传说。\n","参与者提出的问题: 是村里的人偷的么\n","回答: 是\n","\n","谜面: 在一个炎热的夏日,乡村的甄家大院的西瓜突然全部不翼而飞。据了解,甄家大院周围并没有其他人家,而且门窗都完好无损,没有任何被撬的痕迹。村民们议论纷纷,猜测这批西瓜究竟去了哪里。你知道西瓜去了哪里吗?\n","谜底: 原来,这批西瓜是被一只巨大的乌鸦偷走了。这只乌鸦为了给自己的孩子们准备食物,它趁着夜色,竟然将甄家大院的西瓜一颗颗地带回了巢穴。第二天,村民们发现了乌鸦的巢穴,里面堆满了西瓜,而这个意外的真相让所有人都忍俊不禁。甄家老爷也感慨地说:“真是世界大了,什么奇事都有!”\n","参与者提出的问题: 挖地道\n","回答: 问法错误\n","\n","谜面: 在一个炎热的夏日,乡村的甄家大院的西瓜突然全部不翼而飞。据了解,甄家大院周围并没有其他人家,而且门窗都完好无损,没有任何被撬的痕迹。村民们议论纷纷,猜测这批西瓜究竟去了哪里。你知道西瓜去了哪里吗?\n","谜底: 原来,这批西瓜是被一只巨大的乌鸦偷走了。这只乌鸦为了给自己的孩子们准备食物,它趁着夜色,竟然将甄家大院的西瓜一颗颗地带回了巢穴。第二天,村民们发现了乌鸦的巢穴,里面堆满了西瓜,而这个意外的真相让所有人都忍俊不禁。甄家老爷也感慨地说:“真是世界大了,什么奇事都有!”\n","参与者提出的问题: 鸟觅食时发现甄家大院有西瓜,飞入大院一颗一颗把西瓜带走\n","回答: 回答正确\n","\n","谜面: 在一个安静的夜晚,小镇上的钟楼突然停止了报时。第二天早晨,人们发现钟楼的管理员甄大勇失踪了,而钟楼的门紧闭,从外面看起来一切正常。小镇上的人们议论纷纷,不知道发生了什么事情。\n","谜底: 真相是,钟楼的管理员甄大勇在夜晚进行例行的钟楼维护时,不慎从钟楼的顶部摔落,但并未死亡,只是昏迷。由于他跌落时砸到了控制时钟报时的机械装置,导致钟声停止。他躺在钟楼底部,但由于门从内部反锁,外面的人无法进入。甄大勇在第二天中午苏醒后,自己打开了门,这才知道自己引发了小镇上的恐慌。\n","参与者提出的问题: 有人身亡吗?\n","回答: 不是\n","\n","谜面: 在一个安静的夜晚,小镇上的钟楼突然停止了报时。第二天早晨,人们发现钟楼的管理员甄大勇失踪了,而钟楼的门紧闭,从外面看起来一切正常。小镇上的人们议论纷纷,不知道发生了什么事情。\n","谜底: 真相是,钟楼的管理员甄大勇在夜晚进行例行的钟楼维护时,不慎从钟楼的顶部摔落,但并未死亡,只是昏迷。由于他跌落时砸到了控制时钟报时的机械装置,导致钟声停止。他躺在钟楼底部,但由于门从内部反锁,外面的人无法进入。甄大勇在第二天中午苏醒后,自己打开了门,这才知道自己引发了小镇上的恐慌。\n","参与者提出的问题: 有人跟甄大勇有仇吗\n","回答: 不重要\n","\n","谜面: 在一个安静��夜晚,小镇上的钟楼突然停止了报时。第二天早晨,人们发现钟楼的管理员甄大勇失踪了,而钟楼的门紧闭,从外面看起来一切正常。小镇上的人们议论纷纷,不知道发生了什么事情。\n","谜底: 真相是,钟楼的管理员甄大勇在夜晚进行例行的钟楼维护时,不慎从钟楼的顶部摔落,但并未死亡,只是昏迷。由于他跌落时砸到了控制时钟报时的机械装置,导致钟声停止。他躺在钟楼底部,但由于门从内部反锁,外面的人无法进入。甄大勇在第二天中午苏醒后,自己打开了门,这才知道自己引发了小镇上的恐慌。\n","参与者提出的问题: 他仅仅是在修钟楼吗\n","回答: 是\n","\n","谜面: 在一个安静的夜晚,小镇上的钟楼突然停止了报时。第二天早晨,人们发现钟楼的管理员甄大勇失踪了,而钟楼的门紧闭,从外面看起来一切正常。小镇上的人们议论纷纷,不知道发生了什么事情。\n","谜底: 真相是,钟楼的管理员甄大勇在夜晚进行例行的钟楼维护时,不慎从钟楼的顶部摔落,但并未死亡,只是昏迷。由于他跌落时砸到了控制时钟报时的机械装置,导致钟声停止。他躺在钟楼底部,但由于门从内部反锁,外面的人无法进入。甄大勇在第二天中午苏醒后,自己打开了门,这才知道自己引发了小镇上的恐慌。\n","参与者提出的问题: 是自然意外还是人为意外\n","回答: 问法错误\n","\n","谜面: 在一个安静的夜晚,小镇上的钟楼突然停止了报时。第二天早晨,人们发现钟楼的管理员甄大勇失踪了,而钟楼的门紧闭,从外面看起来一切正常。小镇上的人们议论纷纷,不知道发生了什么事情。\n","谜底: 真相是,钟楼的管理员甄大勇在夜晚进行例行的钟楼维护时,不慎从钟楼的顶部摔落,但并未死亡,只是昏迷。由于他跌落时砸到了控制时钟报时的机械装置,导致钟声停止。他躺在钟楼底部,但由于门从内部反锁,外面的人无法进入。甄大勇在第二天中午苏醒后,自己打开了门,这才知道自己引发了小镇上的恐慌。\n","参与者提出的问题: 因为甄在钟楼里维修然后昏迷了导致钟楼停止报时\n","回答: 回答正确\n","\n","\n","谜面: {}\n","谜底: {}\n","参与者提出的问题: {}\n","回答: \n","\n"]}],"source":["datasets = load_logical_reasoning_dataset(data_path)\n","\n","prompt = get_few_shot_prompt_template(10, datasets[\"train\"].to_pandas(), debug=True)"]},{"cell_type":"code","execution_count":8,"metadata":{},"outputs":[{"data":{"text/plain":["{'text': '甄加索是自杀吗',\n"," 'label': '不是',\n"," 'answer': None,\n"," 'title': '海岸之谜',\n"," 'puzzle': '在远离城市喧嚣的海边小屋,一天清晨,邻居发现甄加索僵卧在沙滩上,已无生命迹象。现场没有发现任何打斗的迹象。请问甄加索的死因是什么?',\n"," 'truth': '甄加索是一位热爱自然的画家,他每年都会来到这个海边小屋寻找灵感。在他生命的最后几天,他一直在创作一幅描绘海洋生物的画作。在画即将完成的前一天晚上,他骑着自行车外出,打算在海边观赏夜景。然而,他在沙滩上意外发现了一只搁浅的海豚,为了救助这只海豚,他耗费了极大的体力,最终成功将其送回海中。筋疲力尽的甄加索在沙滩上睡着了,由于他患有严重的心脏病,却未告知旁人,在寒冷的海风中,他的心脏停止了跳动。因此,警方在现场只发现了车轮痕迹和未完成的画作,而没有发现任何他杀的迹象。'}"]},"execution_count":8,"metadata":{},"output_type":"execute_result"}],"source":["row = datasets[\"test\"][0]\n","row"]},{"cell_type":"code","execution_count":9,"metadata":{},"outputs":[],"source":["user_prompt = prompt.format(row[\"puzzle\"], row[\"truth\"], row[\"text\"])"]},{"cell_type":"code","execution_count":10,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["CPU times: total: 46.9 ms\n","Wall time: 2.72 s\n"]},{"data":{"text/plain":["'不是'"]},"execution_count":10,"metadata":{},"output_type":"execute_result"}],"source":["%%time\n","\n","invoke_langchain(user_prompt, max_tokens=max_new_tokens, model=model_name, is_openai=False)"]},{"cell_type":"markdown","metadata":{},"source":["## Run Completion Endpoints"]},{"cell_type":"code","execution_count":13,"metadata":{},"outputs":[],"source":["from llm_toolkit.eval_openai import evaluate_model_with_num_shots"]},{"cell_type":"code","execution_count":15,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["Evaluating model: claude-3-5-sonnet-20240620\n","--------------------------------------------------\n","text: 甄加索是自杀吗\n","--------------------------------------------------\n","label: 不是\n","--------------------------------------------------\n","answer: nan\n","--------------------------------------------------\n","title: 海岸之谜\n","--------------------------------------------------\n","puzzle: 在远离城市喧嚣的海边小屋,一天清晨,邻居发现甄加索僵卧在沙滩上,已无生命迹象。现场没有发现任何打斗的迹象。请问甄加索的死因是什么?\n","--------------------------------------------------\n","truth: 甄加索是一位热爱自然的画家,他每年都会来到这个海边小屋寻找灵感。在他生命的最后几天,他一直在创作一幅描绘海洋生物的画作。在画即将完成的前一天晚上,他骑着自行车外出,打算在海边观赏夜景。然而,他在沙滩上意外发现了一只搁浅的海豚,为了救助这只海豚,他耗费了极大的体力,最终成功将其送回海中。筋疲力尽的甄加索在沙滩上睡着了,由于他患有严重的心脏病,却未告知旁人,在寒冷的海风中,他的心脏停止了跳动。因此,警方在现场只发现了车轮痕迹和未完成的画作,而没有发现任何他杀的迹象。\n","*** Evaluating with num_shots: 0\n","user_prompt: 你是一个情景猜谜游戏的主持人。游戏规则如下:\n","\n","1. 参与者会得到一个谜面,谜面会描述一个简单又难以理解的事件。\n","2. 主持人知道谜底,谜底是谜面的答案。\n","3. 参与者可以询问任何封闭式问题来找寻事件的真相。\n","4. 对于每个问题,主持人将根据实际情况回答以下五个选项之一:是、不是、不重要、回答正确、问法错误。各回答的判断标准如下:\n"," - 若谜面和谜底能找到问题的答案,回答:是或者不是\n"," - 若谜面和谜底不能直接或者间接推断出问题的答案,回答:不重要\n"," - 若参与者提问不是一个封闭式问题或者问题难以理解,回答:问法错误\n"," - 若参与者提问基本还原了谜底真相,回答:回答正确\n","5. 回答中不能添加任何其它信息,也不能省略选项中的任何一个字。例如,不可以把“不是”省略成“不”。\n","\n","请严格按照这些规则回答参与者提出的问题。\n","\n","谜面: {}\n","谜底: {}\n","参与者提出的问题: {}\n","回答: \n","\n"]},{"name":"stderr","output_type":"stream","text":["100%|██████████| 3000/3000 [1:21:20<00:00, 1.63s/it]\n"]},{"name":"stdout","output_type":"stream","text":["claude-3-5-sonnet-20240620/shots-00 metrics: {'accuracy': 0.698, 'incorrect_ids': [9, 10, 11, 12, 17, 21, 23, 24, 29, 31, 34, 35, 36, 42, 52, 55, 58, 59, 62, 64, 65, 66, 67, 77, 81, 82, 84, 88, 91, 93, 94, 97, 101, 102, 104, 105, 109, 112, 113, 115, 116, 117, 124, 129, 131, 139, 143, 150, 155, 161, 163, 164, 173, 179, 189, 191, 192, 193, 198, 200, 201, 202, 207, 215, 220, 221, 222, 224, 225, 228, 229, 230, 231, 235, 236, 237, 240, 245, 248, 249, 250, 251, 252, 253, 255, 257, 259, 260, 261, 263, 268, 269, 271, 273, 283, 284, 286, 289, 290, 292, 293, 295, 299, 301, 303, 304, 308, 309, 311, 314, 317, 318, 320, 321, 323, 326, 328, 329, 330, 333, 334, 335, 337, 338, 350, 355, 356, 357, 360, 362, 363, 364, 368, 370, 371, 372, 373, 374, 377, 383, 389, 395, 396, 397, 408, 410, 414, 421, 426, 430, 440, 447, 451, 452, 454, 456, 458, 461, 464, 465, 466, 467, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 482, 483, 484, 485, 486, 487, 488, 490, 492, 493, 494, 496, 497, 500, 501, 502, 503, 506, 507, 508, 510, 511, 513, 514, 516, 517, 518, 519, 520, 528, 530, 531, 536, 540, 544, 560, 566, 570, 571, 575, 581, 589, 591, 592, 593, 596, 598, 599, 601, 609, 612, 613, 614, 621, 623, 625, 626, 627, 628, 629, 631, 632, 633, 634, 635, 636, 644, 647, 650, 653, 656, 663, 666, 671, 680, 682, 683, 690, 695, 701, 702, 708, 720, 721, 726, 729, 730, 731, 734, 739, 740, 754, 761, 766, 770, 771, 774, 778, 786, 788, 790, 792, 795, 798, 799, 801, 802, 805, 808, 809, 810, 813, 817, 818, 819, 820, 821, 822, 823, 824, 825, 828, 833, 834, 837, 840, 841, 843, 847, 849, 851, 856, 861, 863, 865, 866, 869, 870, 875, 876, 884, 886, 889, 890, 899, 904, 907, 909, 912, 913, 920, 924, 927, 930, 932, 934, 935, 937, 945, 952, 954, 956, 958, 962, 964, 966, 969, 973, 976, 977, 980, 982, 987, 991, 994, 1001, 1004, 1006, 1012, 1018, 1019, 1027, 1031, 1032, 1033, 1036, 1040, 1043, 1049, 1051, 1052, 1053, 1054, 1055, 1059, 1061, 1066, 1073, 1074, 1077, 1080, 1087, 1089, 1091, 1093, 1096, 1107, 1116, 1117, 1125, 1126, 1130, 1135, 1149, 1154, 1158, 1162, 1163, 1164, 1166, 1170, 1172, 1178, 1180, 1181, 1183, 1185, 1196, 1198, 1203, 1211, 1212, 1221, 1226, 1228, 1232, 1235, 1237, 1240, 1241, 1244, 1251, 1252, 1256, 1257, 1259, 1266, 1267, 1282, 1289, 1295, 1305, 1308, 1311, 1313, 1314, 1316, 1317, 1318, 1324, 1327, 1331, 1332, 1340, 1344, 1345, 1349, 1353, 1363, 1364, 1366, 1368, 1369, 1370, 1372, 1373, 1378, 1379, 1385, 1386, 1391, 1402, 1404, 1405, 1406, 1407, 1409, 1412, 1416, 1420, 1422, 1426, 1427, 1433, 1439, 1440, 1443, 1446, 1449, 1451, 1453, 1457, 1462, 1464, 1469, 1470, 1476, 1477, 1486, 1490, 1494, 1496, 1500, 1512, 1515, 1517, 1518, 1525, 1526, 1542, 1544, 1546, 1547, 1556, 1558, 1564, 1573, 1576, 1580, 1581, 1585, 1586, 1587, 1589, 1590, 1592, 1593, 1596, 1603, 1605, 1606, 1622, 1627, 1628, 1629, 1630, 1631, 1635, 1639, 1641, 1643, 1645, 1647, 1648, 1650, 1651, 1654, 1655, 1658, 1659, 1666, 1668, 1669, 1672, 1673, 1674, 1675, 1679, 1681, 1684, 1686, 1689, 1691, 1695, 1698, 1700, 1712, 1716, 1726, 1727, 1728, 1735, 1738, 1739, 1751, 1754, 1755, 1756, 1762, 1772, 1773, 1777, 1778, 1783, 1785, 1786, 1787, 1796, 1799, 1801, 1805, 1806, 1809, 1812, 1816, 1820, 1822, 1827, 1835, 1841, 1854, 1859, 1860, 1861, 1869, 1872, 1882, 1885, 1888, 1895, 1897, 1906, 1907, 1914, 1918, 1933, 1943, 1944, 1945, 1953, 1956, 1958, 1959, 1960, 1961, 1962, 1964, 1965, 1979, 1981, 1982, 1984, 1986, 1988, 1990, 1994, 1995, 2009, 2021, 2029, 2031, 2035, 2042, 2045, 2047, 2049, 2059, 2061, 2062, 2064, 2068, 2071, 2076, 2077, 2081, 2091, 2092, 2094, 2100, 2102, 2105, 2107, 2109, 2112, 2114, 2118, 2119, 2121, 2123, 2126, 2133, 2135, 2140, 2141, 2145, 2147, 2155, 2157, 2159, 2161, 2162, 2164, 2167, 2169, 2175, 2177, 2181, 2182, 2183, 2184, 2185, 2186, 2189, 2193, 2194, 2195, 2197, 2198, 2206, 2212, 2215, 2219, 2223, 2227, 2229, 2230, 2235, 2236, 2237, 2238, 2246, 2247, 2249, 2250, 2252, 2255, 2260, 2261, 2262, 2263, 2265, 2267, 2274, 2276, 2280, 2293, 2294, 2301, 2304, 2312, 2322, 2324, 2328, 2334, 2339, 2342, 2344, 2351, 2354, 2357, 2359, 2360, 2361, 2362, 2364, 2366, 2373, 2378, 2385, 2388, 2395, 2396, 2400, 2404, 2409, 2410, 2412, 2414, 2423, 2424, 2425, 2429, 2433, 2437, 2440, 2441, 2442, 2444, 2465, 2469, 2471, 2486, 2493, 2496, 2503, 2511, 2513, 2520, 2522, 2526, 2529, 2532, 2535, 2538, 2539, 2540, 2542, 2547, 2548, 2549, 2554, 2556, 2557, 2559, 2560, 2562, 2563, 2564, 2575, 2577, 2589, 2595, 2600, 2601, 2603, 2604, 2617, 2624, 2626, 2629, 2632, 2633, 2634, 2637, 2645, 2653, 2655, 2658, 2660, 2667, 2671, 2672, 2676, 2678, 2681, 2682, 2687, 2694, 2700, 2704, 2707, 2711, 2712, 2714, 2716, 2717, 2719, 2726, 2727, 2731, 2735, 2736, 2742, 2744, 2746, 2747, 2748, 2749, 2751, 2752, 2754, 2757, 2760, 2762, 2766, 2767, 2771, 2787, 2788, 2790, 2796, 2797, 2798, 2800, 2801, 2802, 2806, 2807, 2811, 2812, 2814, 2815, 2816, 2821, 2823, 2837, 2843, 2844, 2854, 2856, 2857, 2867, 2871, 2876, 2877, 2880, 2884, 2887, 2888, 2891, 2896, 2899, 2905, 2912, 2916, 2921, 2924, 2926, 2933, 2934, 2937, 2938, 2944, 2949, 2952, 2953, 2955, 2960, 2962, 2963, 2965, 2966, 2969, 2973, 2975, 2976, 2978, 2979, 2980, 2987, 2990, 2991, 2995, 2999], 'precision': 0.7933748867472142, 'recall': 0.698, 'f1': 0.73047417384539, 'ratio_valid_classifications': 1.0}\n","*** Evaluating with num_shots: 10\n","user_prompt: 你是一个情景猜谜游戏的主持人。游戏规则如下:\n","\n","1. 参与者会得到一个谜面,谜面会描述一个简单又难以理解的事件。\n","2. 主持人知道谜底,谜底是谜面的答案。\n","3. 参与者可以询问任何封闭式问题来找寻事件的真相。\n","4. 对于每个问题,主持人将根据实际情况回答以下五个选项之一:是、不是、不重要、回答正确、问法错误。各回答的判断标准如下:\n"," - 若谜面和谜底能找到问题的答案,回答:是或者不是\n"," - 若谜面和谜底不能直接或者间接推断出问题的答案,回答:不重要\n"," - 若参与者提问不是一个封闭式问题或者问题难以理解,回答:问法错误\n"," - 若参与者提问基本还原了谜底真相,回答:回答正确\n","5. 回答中不能添加任何其它信息,也不能省略选项中的任何一个字。例如,不可以把“不是”省略成“不”。\n","\n","请严格按照这些规则回答参与者提出的问题。\n","\n","示例输入和输出: \n","谜面: 在甄家村里,有一个古老的传说:每年南瓜丰收的季节,南瓜田里总有一个最大的南瓜会不翼而飞,村民们对此现象困惑不解。请找出南瓜失踪背后的原因。\n","谜底: 真相原来与一位年迈的农夫有关。这位农夫年轻时,曾与一位美丽的姑娘相恋。他们约定在南瓜丰收的季节结婚。然而,命运弄人,姑娘在婚礼前的一场意外中离世。悲伤的农夫为了纪念心爱的姑娘,每年都会将最大的南瓜偷走,放到姑娘的墓前,以此寄托自己的哀思。这一行为延续了多年,成为了乡村里一个神秘的传说。\n","参与者提出的问题: 偷的人信神吗\n","回答: 不是\n","\n","谜面: 在甄家村里,有一个古老的传说:每年南瓜丰收的季节,南瓜田里总有一个最大的南瓜会不翼而飞,村民们对此现象困惑不解。请找出南瓜失踪背后的原因。\n","谜底: 真相原来与一位年迈的农夫有关。这位农夫年轻时,曾与一位美丽的姑娘相恋。他们约定在南瓜丰收的季节结婚。然而,命运弄人,姑娘在婚礼前的一场意外中离世。悲伤的农夫为了纪念心爱的姑娘,每年都会将最大的南瓜偷走,放到姑娘的墓前,以此寄托自己的哀思。这一行为延续了多年,成为了乡村里一个神秘的传说。\n","���与者提出的问题: 村庄里的人喜欢南瓜嘛\n","回答: 不重要\n","\n","谜面: 在甄家村里,有一个古老的传说:每年南瓜丰收的季节,南瓜田里总有一个最大的南瓜会不翼而飞,村民们对此现象困惑不解。请找出南瓜失踪背后的原因。\n","谜底: 真相原来与一位年迈的农夫有关。这位农夫年轻时,曾与一位美丽的姑娘相恋。他们约定在南瓜丰收的季节结婚。然而,命运弄人,姑娘在婚礼前的一场意外中离世。悲伤的农夫为了纪念心爱的姑娘,每年都会将最大的南瓜偷走,放到姑娘的墓前,以此寄托自己的哀思。这一行为延续了多年,成为了乡村里一个神秘的传说。\n","参与者提出的问题: 是村里的人偷的么\n","回答: 是\n","\n","谜面: 在一个炎热的夏日,乡村的甄家大院的西瓜突然全部不翼而飞。据了解,甄家大院周围并没有其他人家,而且门窗都完好无损,没有任何被撬的痕迹。村民们议论纷纷,猜测这批西瓜究竟去了哪里。你知道西瓜去了哪里吗?\n","谜底: 原来,这批西瓜是被一只巨大的乌鸦偷走了。这只乌鸦为了给自己的孩子们准备食物,它趁着夜色,竟然将甄家大院的西瓜一颗颗地带回了巢穴。第二天,村民们发现了乌鸦的巢穴,里面堆满了西瓜,而这个意外的真相让所有人都忍俊不禁。甄家老爷也感慨地说:“真是世界大了,什么奇事都有!”\n","参与者提出的问题: 挖地道\n","回答: 问法错误\n","\n","谜面: 在一个炎热的夏日,乡村的甄家大院的西瓜突然全部不翼而飞。据了解,甄家大院周围并没有其他人家,而且门窗都完好无损,没有任何被撬的痕迹。村民们议论纷纷,猜测这批西瓜究竟去了哪里。你知道西瓜去了哪里吗?\n","谜底: 原来,这批西瓜是被一只巨大的乌鸦偷走了。这只乌鸦为了给自己的孩子们准备食物,它趁着夜色,竟然将甄家大院的西瓜一颗颗地带回了巢穴。第二天,村民们发现了乌鸦的巢穴,里面堆满了西瓜,而这个意外的真相让所有人都忍俊不禁。甄家老爷也感慨地说:“真是世界大了,什么奇事都有!”\n","参与者提出的问题: 鸟觅食时发现甄家大院有西瓜,飞入大院一颗一颗把西瓜带走\n","回答: 回答正确\n","\n","谜面: 在一个安静的夜晚,小镇上的钟楼突然停止了报时。第二天早晨,人们发现钟楼的管理员甄大勇失踪了,而钟楼的门紧闭,从外面看起来一切正常。小镇上的人们议论纷纷,不知道发生了什么事情。\n","谜底: 真相是,钟楼的管理员甄大勇在夜晚进行例行的钟楼维护时,不慎从钟楼的顶部摔落,但并未死亡,只是昏迷。由于他跌落时砸到了控制时钟报时的机械装置,导致钟声停止。他躺在钟楼底部,但由于门从内部反锁,外面的人无法进入。甄大勇在第二天中午苏醒后,自己打开了门,这才知道自己引发了小镇上的恐慌。\n","参与者提出的问题: 有人身亡吗?\n","回答: 不是\n","\n","谜面: 在一个安静的夜晚,小镇上的钟楼突然停止了报时。第二天早晨,人们发现钟楼的管理员甄大勇失踪了,而钟楼的门紧闭,从外面看起来一切正常。小镇上的人们议论纷纷,不知道发生了什么事情。\n","谜底: 真相是,钟楼的管理员甄大勇在夜晚进行例行的钟楼维护时,不慎从钟楼的顶部摔落,但并未死亡,只是昏迷。由于他跌落时砸到了控制时钟报时的机械装置,导致钟声停止。他躺在钟楼底部,但由于门从内部反锁,外面的人无法进入。甄大勇在第二天中午苏醒后,自己打开了门,这才知道自己引发了小镇上的恐慌。\n","参与者提出的问题: 有人跟甄大勇有仇吗\n","回答: 不重要\n","\n","谜面: 在一个安静的夜晚,小镇上的钟楼突然停止了报时。第二天早晨,人们发现钟楼的管理员甄大勇失踪了,而钟楼的门紧闭,从外面看起来一切正常。小镇上的人们议论纷纷,不知道发生了什么事情。\n","谜底: 真相是,钟楼的管理员甄大勇在夜晚进行例行的钟楼维护时,不慎从钟楼的顶部摔落,但并未死亡,只是昏迷。由于他跌落时砸到了控制时钟报时的机械装置,导致钟声停止。他躺在钟楼底部,但由于门从内部反锁,外面的人无法进入。甄大勇在第二天中午苏醒后,自己打开了门,这才知道自己引发了小镇上的恐慌。\n","参与者提出的问题: 他仅仅是在修钟楼吗\n","回答: 是\n","\n","谜面: 在一个安静的夜晚,小镇上的钟楼突然停止了报时。第二天早晨,人们发现钟楼的管理员甄大勇失踪了,而钟楼的门紧闭,从外面看起来一切正常。小镇上的人们议论纷纷,不知道发生了什么事情。\n","谜底: 真相是��钟楼的管理员甄大勇在夜晚进行例行的钟楼维护时,不慎从钟楼的顶部摔落,但并未死亡,只是昏迷。由于他跌落时砸到了控制时钟报时的机械装置,导致钟声停止。他躺在钟楼底部,但由于门从内部反锁,外面的人无法进入。甄大勇在第二天中午苏醒后,自己打开了门,这才知道自己引发了小镇上的恐慌。\n","参与者提出的问题: 是自然意外还是人为意外\n","回答: 问法错误\n","\n","谜面: 在一个安静的夜晚,小镇上的钟楼突然停止了报时。第二天早晨,人们发现钟楼的管理员甄大勇失踪了,而钟楼的门紧闭,从外面看起来一切正常。小镇上的人们议论纷纷,不知道发生了什么事情。\n","谜底: 真相是,钟楼的管理员甄大勇在夜晚进行例行的钟楼维护时,不慎从钟楼的顶部摔落,但并未死亡,只是昏迷。由于他跌落时砸到了控制时钟报时的机械装置,导致钟声停止。他躺在钟楼底部,但由于门从内部反锁,外面的人无法进入。甄大勇在第二天中午苏醒后,自己打开了门,这才知道自己引发了小镇上的恐慌。\n","参与者提出的问题: 因为甄在钟楼里维修然后昏迷了导致钟楼停止报时\n","回答: 回答正确\n","\n","\n","谜面: {}\n","谜底: {}\n","参与者提出的问题: {}\n","回答: \n","\n"]},{"name":"stderr","output_type":"stream","text":[" 2%|▏ | 72/3000 [02:42<1:50:20, 2.26s/it]\n"]},{"ename":"RateLimitError","evalue":"Error code: 429 - {'type': 'error', 'error': {'type': 'rate_limit_error', 'message': 'Number of request tokens has exceeded your daily rate limit (https://docs.anthropic.com/en/api/rate-limits); see the response headers for current usage. Please reduce the prompt length or the maximum tokens requested, or try again later. You may also contact sales at https://www.anthropic.com/contact-sales to discuss your options for a rate limit increase.'}}","output_type":"error","traceback":["\u001b[1;31m---------------------------------------------------------------------------\u001b[0m","\u001b[1;31mRateLimitError\u001b[0m Traceback (most recent call last)","File \u001b[1;32m<timed eval>:1\u001b[0m\n","File \u001b[1;32md:\\code\\projects\\logical-reasoning\\llm_toolkit\\eval_openai.py:60\u001b[0m, in \u001b[0;36mevaluate_model_with_num_shots\u001b[1;34m(model_name, datasets, results_path, range_num_shots, max_new_tokens, result_column_name)\u001b[0m\n\u001b[0;32m 57\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m num_shots \u001b[38;5;129;01min\u001b[39;00m range_num_shots:\n\u001b[0;32m 58\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m*** Evaluating with num_shots: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mnum_shots\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m---> 60\u001b[0m predictions \u001b[38;5;241m=\u001b[39m \u001b[43meval_openai\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 61\u001b[0m \u001b[43m \u001b[49m\u001b[43meval_dataset\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 62\u001b[0m \u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmodel_name\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 63\u001b[0m \u001b[43m \u001b[49m\u001b[43mmax_new_tokens\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmax_new_tokens\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 64\u001b[0m \u001b[43m \u001b[49m\u001b[43mnum_shots\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mnum_shots\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 65\u001b[0m \u001b[43m \u001b[49m\u001b[43mtrain_dataset\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdatasets\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtrain\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mto_pandas\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 66\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 67\u001b[0m model_name_with_shorts \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m 68\u001b[0m result_column_name\n\u001b[0;32m 69\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result_column_name\n\u001b[0;32m 70\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmodel_name\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m/shots-\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mnum_shots\u001b[38;5;132;01m:\u001b[39;00m\u001b[38;5;124m02d\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 71\u001b[0m )\n\u001b[0;32m 73\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n","File \u001b[1;32md:\\code\\projects\\logical-reasoning\\llm_toolkit\\logical_reasoning_utils.py:553\u001b[0m, in \u001b[0;36meval_openai\u001b[1;34m(eval_dataset, model, max_new_tokens, num_shots, train_dataset)\u001b[0m\n\u001b[0;32m 550\u001b[0m is_openai \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mclaude\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m model\n\u001b[0;32m 552\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m tqdm(\u001b[38;5;28mrange\u001b[39m(total)):\n\u001b[1;32m--> 553\u001b[0m output \u001b[38;5;241m=\u001b[39m \u001b[43mreasoning_with_openai\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 554\u001b[0m \u001b[43m \u001b[49m\u001b[43meval_dataset\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43miloc\u001b[49m\u001b[43m[\u001b[49m\u001b[43mi\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 555\u001b[0m \u001b[43m \u001b[49m\u001b[43muser_prompt\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 556\u001b[0m \u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 557\u001b[0m \u001b[43m \u001b[49m\u001b[43mmax_tokens\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mis_using_o1\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mmax_new_tokens\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 558\u001b[0m \u001b[43m \u001b[49m\u001b[43mtemperature\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mis_using_o1\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 559\u001b[0m \u001b[43m \u001b[49m\u001b[43musing_system_prompt\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mis_using_o1\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 560\u001b[0m \u001b[43m \u001b[49m\u001b[43mis_openai\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mis_openai\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 561\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 562\u001b[0m predictions\u001b[38;5;241m.\u001b[39mappend(output)\n\u001b[0;32m 564\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m predictions\n","File \u001b[1;32md:\\code\\projects\\logical-reasoning\\llm_toolkit\\logical_reasoning_utils.py:523\u001b[0m, in \u001b[0;36mreasoning_with_openai\u001b[1;34m(row, user_prompt, max_tokens, model, base_url, temperature, using_system_prompt, is_openai)\u001b[0m\n\u001b[0;32m 513\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mreasoning_with_openai\u001b[39m(\n\u001b[0;32m 514\u001b[0m row,\n\u001b[0;32m 515\u001b[0m user_prompt,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 521\u001b[0m is_openai\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[0;32m 522\u001b[0m ):\n\u001b[1;32m--> 523\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43minvoke_langchain\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 524\u001b[0m \u001b[43m \u001b[49m\u001b[43muser_prompt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mformat\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrow\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mpuzzle\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrow\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtruth\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrow\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtext\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 525\u001b[0m \u001b[43m \u001b[49m\u001b[43msystem_prompt\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msystem_prompt\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43musing_system_prompt\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[0;32m 526\u001b[0m \u001b[43m \u001b[49m\u001b[43mmax_tokens\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmax_tokens\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 527\u001b[0m \u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 528\u001b[0m \u001b[43m \u001b[49m\u001b[43mbase_url\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mbase_url\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 529\u001b[0m \u001b[43m \u001b[49m\u001b[43mtemperature\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtemperature\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 530\u001b[0m \u001b[43m \u001b[49m\u001b[43mis_openai\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mis_openai\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 531\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n","File \u001b[1;32md:\\code\\projects\\logical-reasoning\\llm_toolkit\\llm_utils.py:278\u001b[0m, in \u001b[0;36minvoke_langchain\u001b[1;34m(user_prompt, system_prompt, model, temperature, max_tokens, base_url, is_openai)\u001b[0m\n\u001b[0;32m 275\u001b[0m prompt \u001b[38;5;241m=\u001b[39m ChatPromptTemplate\u001b[38;5;241m.\u001b[39mfrom_messages(messages)\n\u001b[0;32m 277\u001b[0m chain \u001b[38;5;241m=\u001b[39m prompt \u001b[38;5;241m|\u001b[39m llm\n\u001b[1;32m--> 278\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mchain\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m{\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 280\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m response\u001b[38;5;241m.\u001b[39mcontent\n","File \u001b[1;32mc:\\Users\\dongh\\.conda\\envs\\llm-perf-bench\\Lib\\site-packages\\langchain_core\\runnables\\base.py:3013\u001b[0m, in \u001b[0;36mRunnableSequence.invoke\u001b[1;34m(self, input, config, **kwargs)\u001b[0m\n\u001b[0;32m 3011\u001b[0m \u001b[38;5;28minput\u001b[39m \u001b[38;5;241m=\u001b[39m context\u001b[38;5;241m.\u001b[39mrun(step\u001b[38;5;241m.\u001b[39minvoke, \u001b[38;5;28minput\u001b[39m, config, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m 3012\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m-> 3013\u001b[0m \u001b[38;5;28minput\u001b[39m \u001b[38;5;241m=\u001b[39m context\u001b[38;5;241m.\u001b[39mrun(step\u001b[38;5;241m.\u001b[39minvoke, \u001b[38;5;28minput\u001b[39m, config)\n\u001b[0;32m 3014\u001b[0m \u001b[38;5;66;03m# finish the root run\u001b[39;00m\n\u001b[0;32m 3015\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n","File \u001b[1;32mc:\\Users\\dongh\\.conda\\envs\\llm-perf-bench\\Lib\\site-packages\\langchain_core\\language_models\\chat_models.py:286\u001b[0m, in \u001b[0;36mBaseChatModel.invoke\u001b[1;34m(self, input, config, stop, **kwargs)\u001b[0m\n\u001b[0;32m 275\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minvoke\u001b[39m(\n\u001b[0;32m 276\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[0;32m 277\u001b[0m \u001b[38;5;28minput\u001b[39m: LanguageModelInput,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 281\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any,\n\u001b[0;32m 282\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m BaseMessage:\n\u001b[0;32m 283\u001b[0m config \u001b[38;5;241m=\u001b[39m ensure_config(config)\n\u001b[0;32m 284\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m cast(\n\u001b[0;32m 285\u001b[0m ChatGeneration,\n\u001b[1;32m--> 286\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgenerate_prompt\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 287\u001b[0m \u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_convert_input\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 288\u001b[0m \u001b[43m \u001b[49m\u001b[43mstop\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstop\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 289\u001b[0m \u001b[43m \u001b[49m\u001b[43mcallbacks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mconfig\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mcallbacks\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 290\u001b[0m \u001b[43m \u001b[49m\u001b[43mtags\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mconfig\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtags\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 291\u001b[0m \u001b[43m \u001b[49m\u001b[43mmetadata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mconfig\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmetadata\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 292\u001b[0m \u001b[43m \u001b[49m\u001b[43mrun_name\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mconfig\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mrun_name\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 293\u001b[0m \u001b[43m \u001b[49m\u001b[43mrun_id\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mconfig\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpop\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mrun_id\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 294\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 295\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241m.\u001b[39mgenerations[\u001b[38;5;241m0\u001b[39m][\u001b[38;5;241m0\u001b[39m],\n\u001b[0;32m 296\u001b[0m )\u001b[38;5;241m.\u001b[39mmessage\n","File \u001b[1;32mc:\\Users\\dongh\\.conda\\envs\\llm-perf-bench\\Lib\\site-packages\\langchain_core\\language_models\\chat_models.py:786\u001b[0m, in \u001b[0;36mBaseChatModel.generate_prompt\u001b[1;34m(self, prompts, stop, callbacks, **kwargs)\u001b[0m\n\u001b[0;32m 778\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mgenerate_prompt\u001b[39m(\n\u001b[0;32m 779\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[0;32m 780\u001b[0m prompts: List[PromptValue],\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 783\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any,\n\u001b[0;32m 784\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m LLMResult:\n\u001b[0;32m 785\u001b[0m prompt_messages \u001b[38;5;241m=\u001b[39m [p\u001b[38;5;241m.\u001b[39mto_messages() \u001b[38;5;28;01mfor\u001b[39;00m p \u001b[38;5;129;01min\u001b[39;00m prompts]\n\u001b[1;32m--> 786\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgenerate\u001b[49m\u001b[43m(\u001b[49m\u001b[43mprompt_messages\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstop\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstop\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcallbacks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcallbacks\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n","File \u001b[1;32mc:\\Users\\dongh\\.conda\\envs\\llm-perf-bench\\Lib\\site-packages\\langchain_core\\language_models\\chat_models.py:643\u001b[0m, in \u001b[0;36mBaseChatModel.generate\u001b[1;34m(self, messages, stop, callbacks, tags, metadata, run_name, run_id, **kwargs)\u001b[0m\n\u001b[0;32m 641\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m run_managers:\n\u001b[0;32m 642\u001b[0m run_managers[i]\u001b[38;5;241m.\u001b[39mon_llm_error(e, response\u001b[38;5;241m=\u001b[39mLLMResult(generations\u001b[38;5;241m=\u001b[39m[]))\n\u001b[1;32m--> 643\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m e\n\u001b[0;32m 644\u001b[0m flattened_outputs \u001b[38;5;241m=\u001b[39m [\n\u001b[0;32m 645\u001b[0m LLMResult(generations\u001b[38;5;241m=\u001b[39m[res\u001b[38;5;241m.\u001b[39mgenerations], llm_output\u001b[38;5;241m=\u001b[39mres\u001b[38;5;241m.\u001b[39mllm_output) \u001b[38;5;66;03m# type: ignore[list-item]\u001b[39;00m\n\u001b[0;32m 646\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m res \u001b[38;5;129;01min\u001b[39;00m results\n\u001b[0;32m 647\u001b[0m ]\n\u001b[0;32m 648\u001b[0m llm_output \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_combine_llm_outputs([res\u001b[38;5;241m.\u001b[39mllm_output \u001b[38;5;28;01mfor\u001b[39;00m res \u001b[38;5;129;01min\u001b[39;00m results])\n","File \u001b[1;32mc:\\Users\\dongh\\.conda\\envs\\llm-perf-bench\\Lib\\site-packages\\langchain_core\\language_models\\chat_models.py:633\u001b[0m, in \u001b[0;36mBaseChatModel.generate\u001b[1;34m(self, messages, stop, callbacks, tags, metadata, run_name, run_id, **kwargs)\u001b[0m\n\u001b[0;32m 630\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(messages):\n\u001b[0;32m 631\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 632\u001b[0m results\u001b[38;5;241m.\u001b[39mappend(\n\u001b[1;32m--> 633\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_generate_with_cache\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 634\u001b[0m \u001b[43m \u001b[49m\u001b[43mm\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 635\u001b[0m \u001b[43m \u001b[49m\u001b[43mstop\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstop\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 636\u001b[0m \u001b[43m \u001b[49m\u001b[43mrun_manager\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrun_managers\u001b[49m\u001b[43m[\u001b[49m\u001b[43mi\u001b[49m\u001b[43m]\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mrun_managers\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[0;32m 637\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 638\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 639\u001b[0m )\n\u001b[0;32m 640\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[0;32m 641\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m run_managers:\n","File \u001b[1;32mc:\\Users\\dongh\\.conda\\envs\\llm-perf-bench\\Lib\\site-packages\\langchain_core\\language_models\\chat_models.py:855\u001b[0m, in \u001b[0;36mBaseChatModel._generate_with_cache\u001b[1;34m(self, messages, stop, run_manager, **kwargs)\u001b[0m\n\u001b[0;32m 853\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 854\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m inspect\u001b[38;5;241m.\u001b[39msignature(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_generate)\u001b[38;5;241m.\u001b[39mparameters\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrun_manager\u001b[39m\u001b[38;5;124m\"\u001b[39m):\n\u001b[1;32m--> 855\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_generate\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 856\u001b[0m \u001b[43m \u001b[49m\u001b[43mmessages\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstop\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstop\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrun_manager\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrun_manager\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\n\u001b[0;32m 857\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 858\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 859\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_generate(messages, stop\u001b[38;5;241m=\u001b[39mstop, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n","File \u001b[1;32mc:\\Users\\dongh\\.conda\\envs\\llm-perf-bench\\Lib\\site-packages\\langchain_anthropic\\chat_models.py:777\u001b[0m, in \u001b[0;36mChatAnthropic._generate\u001b[1;34m(self, messages, stop, run_manager, **kwargs)\u001b[0m\n\u001b[0;32m 775\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m generate_from_stream(stream_iter)\n\u001b[0;32m 776\u001b[0m payload \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_request_payload(messages, stop\u001b[38;5;241m=\u001b[39mstop, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[1;32m--> 777\u001b[0m data \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_client\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmessages\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcreate\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mpayload\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 778\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_format_output(data, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n","File \u001b[1;32mc:\\Users\\dongh\\.conda\\envs\\llm-perf-bench\\Lib\\site-packages\\anthropic\\_utils\\_utils.py:274\u001b[0m, in \u001b[0;36mrequired_args.<locals>.inner.<locals>.wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 272\u001b[0m msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mMissing required argument: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mquote(missing[\u001b[38;5;241m0\u001b[39m])\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 273\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(msg)\n\u001b[1;32m--> 274\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n","File \u001b[1;32mc:\\Users\\dongh\\.conda\\envs\\llm-perf-bench\\Lib\\site-packages\\anthropic\\resources\\messages.py:878\u001b[0m, in \u001b[0;36mMessages.create\u001b[1;34m(self, max_tokens, messages, model, metadata, stop_sequences, stream, system, temperature, tool_choice, tools, top_k, top_p, extra_headers, extra_query, extra_body, timeout)\u001b[0m\n\u001b[0;32m 871\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m model \u001b[38;5;129;01min\u001b[39;00m DEPRECATED_MODELS:\n\u001b[0;32m 872\u001b[0m warnings\u001b[38;5;241m.\u001b[39mwarn(\n\u001b[0;32m 873\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mThe model \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmodel\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m is deprecated and will reach end-of-life on \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mDEPRECATED_MODELS[model]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124mPlease migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 874\u001b[0m \u001b[38;5;167;01mDeprecationWarning\u001b[39;00m,\n\u001b[0;32m 875\u001b[0m stacklevel\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m3\u001b[39m,\n\u001b[0;32m 876\u001b[0m )\n\u001b[1;32m--> 878\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_post\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 879\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m/v1/messages\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 880\u001b[0m \u001b[43m \u001b[49m\u001b[43mbody\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmaybe_transform\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 881\u001b[0m \u001b[43m \u001b[49m\u001b[43m{\u001b[49m\n\u001b[0;32m 882\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmax_tokens\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mmax_tokens\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 883\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmessages\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mmessages\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 884\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmodel\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 885\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmetadata\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mmetadata\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 886\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mstop_sequences\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mstop_sequences\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 887\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mstream\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 888\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43msystem\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43msystem\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 889\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtemperature\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mtemperature\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 890\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtool_choice\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mtool_choice\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 891\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtools\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mtools\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 892\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtop_k\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mtop_k\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 893\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtop_p\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mtop_p\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 894\u001b[0m \u001b[43m \u001b[49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 895\u001b[0m \u001b[43m \u001b[49m\u001b[43mmessage_create_params\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mMessageCreateParams\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 896\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 897\u001b[0m \u001b[43m \u001b[49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmake_request_options\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 898\u001b[0m \u001b[43m \u001b[49m\u001b[43mextra_headers\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mextra_headers\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mextra_query\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mextra_query\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mextra_body\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mextra_body\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\n\u001b[0;32m 899\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 900\u001b[0m \u001b[43m \u001b[49m\u001b[43mcast_to\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mMessage\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 901\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[0;32m 902\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream_cls\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mStream\u001b[49m\u001b[43m[\u001b[49m\u001b[43mRawMessageStreamEvent\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 903\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n","File \u001b[1;32mc:\\Users\\dongh\\.conda\\envs\\llm-perf-bench\\Lib\\site-packages\\anthropic\\_base_client.py:1260\u001b[0m, in \u001b[0;36mSyncAPIClient.post\u001b[1;34m(self, path, cast_to, body, options, files, stream, stream_cls)\u001b[0m\n\u001b[0;32m 1246\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mpost\u001b[39m(\n\u001b[0;32m 1247\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[0;32m 1248\u001b[0m path: \u001b[38;5;28mstr\u001b[39m,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1255\u001b[0m stream_cls: \u001b[38;5;28mtype\u001b[39m[_StreamT] \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[0;32m 1256\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m ResponseT \u001b[38;5;241m|\u001b[39m _StreamT:\n\u001b[0;32m 1257\u001b[0m opts \u001b[38;5;241m=\u001b[39m FinalRequestOptions\u001b[38;5;241m.\u001b[39mconstruct(\n\u001b[0;32m 1258\u001b[0m method\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpost\u001b[39m\u001b[38;5;124m\"\u001b[39m, url\u001b[38;5;241m=\u001b[39mpath, json_data\u001b[38;5;241m=\u001b[39mbody, files\u001b[38;5;241m=\u001b[39mto_httpx_files(files), \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39moptions\n\u001b[0;32m 1259\u001b[0m )\n\u001b[1;32m-> 1260\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m cast(ResponseT, \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcast_to\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mopts\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstream_cls\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream_cls\u001b[49m\u001b[43m)\u001b[49m)\n","File \u001b[1;32mc:\\Users\\dongh\\.conda\\envs\\llm-perf-bench\\Lib\\site-packages\\anthropic\\_base_client.py:937\u001b[0m, in \u001b[0;36mSyncAPIClient.request\u001b[1;34m(self, cast_to, options, remaining_retries, stream, stream_cls)\u001b[0m\n\u001b[0;32m 928\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mrequest\u001b[39m(\n\u001b[0;32m 929\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[0;32m 930\u001b[0m cast_to: Type[ResponseT],\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 935\u001b[0m stream_cls: \u001b[38;5;28mtype\u001b[39m[_StreamT] \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[0;32m 936\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m ResponseT \u001b[38;5;241m|\u001b[39m _StreamT:\n\u001b[1;32m--> 937\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 938\u001b[0m \u001b[43m \u001b[49m\u001b[43mcast_to\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcast_to\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 939\u001b[0m \u001b[43m \u001b[49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 940\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 941\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream_cls\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream_cls\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 942\u001b[0m \u001b[43m \u001b[49m\u001b[43mremaining_retries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mremaining_retries\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 943\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n","File \u001b[1;32mc:\\Users\\dongh\\.conda\\envs\\llm-perf-bench\\Lib\\site-packages\\anthropic\\_base_client.py:1026\u001b[0m, in \u001b[0;36mSyncAPIClient._request\u001b[1;34m(self, cast_to, options, remaining_retries, stream, stream_cls)\u001b[0m\n\u001b[0;32m 1024\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m retries \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m0\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_should_retry(err\u001b[38;5;241m.\u001b[39mresponse):\n\u001b[0;32m 1025\u001b[0m err\u001b[38;5;241m.\u001b[39mresponse\u001b[38;5;241m.\u001b[39mclose()\n\u001b[1;32m-> 1026\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_retry_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 1027\u001b[0m \u001b[43m \u001b[49m\u001b[43minput_options\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1028\u001b[0m \u001b[43m \u001b[49m\u001b[43mcast_to\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1029\u001b[0m \u001b[43m \u001b[49m\u001b[43mretries\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1030\u001b[0m \u001b[43m \u001b[49m\u001b[43merr\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresponse\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1031\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1032\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream_cls\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream_cls\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1033\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1035\u001b[0m \u001b[38;5;66;03m# If the response is streamed then we need to explicitly read the response\u001b[39;00m\n\u001b[0;32m 1036\u001b[0m \u001b[38;5;66;03m# to completion before attempting to access the response text.\u001b[39;00m\n\u001b[0;32m 1037\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m err\u001b[38;5;241m.\u001b[39mresponse\u001b[38;5;241m.\u001b[39mis_closed:\n","File \u001b[1;32mc:\\Users\\dongh\\.conda\\envs\\llm-perf-bench\\Lib\\site-packages\\anthropic\\_base_client.py:1075\u001b[0m, in \u001b[0;36mSyncAPIClient._retry_request\u001b[1;34m(self, options, cast_to, remaining_retries, response_headers, stream, stream_cls)\u001b[0m\n\u001b[0;32m 1071\u001b[0m \u001b[38;5;66;03m# In a synchronous context we are blocking the entire thread. Up to the library user to run the client in a\u001b[39;00m\n\u001b[0;32m 1072\u001b[0m \u001b[38;5;66;03m# different thread if necessary.\u001b[39;00m\n\u001b[0;32m 1073\u001b[0m time\u001b[38;5;241m.\u001b[39msleep(timeout)\n\u001b[1;32m-> 1075\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 1076\u001b[0m \u001b[43m \u001b[49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1077\u001b[0m \u001b[43m \u001b[49m\u001b[43mcast_to\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcast_to\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1078\u001b[0m \u001b[43m \u001b[49m\u001b[43mremaining_retries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mremaining\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1079\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1080\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream_cls\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream_cls\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1081\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n","File \u001b[1;32mc:\\Users\\dongh\\.conda\\envs\\llm-perf-bench\\Lib\\site-packages\\anthropic\\_base_client.py:1026\u001b[0m, in \u001b[0;36mSyncAPIClient._request\u001b[1;34m(self, cast_to, options, remaining_retries, stream, stream_cls)\u001b[0m\n\u001b[0;32m 1024\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m retries \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m0\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_should_retry(err\u001b[38;5;241m.\u001b[39mresponse):\n\u001b[0;32m 1025\u001b[0m err\u001b[38;5;241m.\u001b[39mresponse\u001b[38;5;241m.\u001b[39mclose()\n\u001b[1;32m-> 1026\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_retry_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 1027\u001b[0m \u001b[43m \u001b[49m\u001b[43minput_options\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1028\u001b[0m \u001b[43m \u001b[49m\u001b[43mcast_to\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1029\u001b[0m \u001b[43m \u001b[49m\u001b[43mretries\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1030\u001b[0m \u001b[43m \u001b[49m\u001b[43merr\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresponse\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1031\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1032\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream_cls\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream_cls\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1033\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1035\u001b[0m \u001b[38;5;66;03m# If the response is streamed then we need to explicitly read the response\u001b[39;00m\n\u001b[0;32m 1036\u001b[0m \u001b[38;5;66;03m# to completion before attempting to access the response text.\u001b[39;00m\n\u001b[0;32m 1037\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m err\u001b[38;5;241m.\u001b[39mresponse\u001b[38;5;241m.\u001b[39mis_closed:\n","File \u001b[1;32mc:\\Users\\dongh\\.conda\\envs\\llm-perf-bench\\Lib\\site-packages\\anthropic\\_base_client.py:1075\u001b[0m, in \u001b[0;36mSyncAPIClient._retry_request\u001b[1;34m(self, options, cast_to, remaining_retries, response_headers, stream, stream_cls)\u001b[0m\n\u001b[0;32m 1071\u001b[0m \u001b[38;5;66;03m# In a synchronous context we are blocking the entire thread. Up to the library user to run the client in a\u001b[39;00m\n\u001b[0;32m 1072\u001b[0m \u001b[38;5;66;03m# different thread if necessary.\u001b[39;00m\n\u001b[0;32m 1073\u001b[0m time\u001b[38;5;241m.\u001b[39msleep(timeout)\n\u001b[1;32m-> 1075\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 1076\u001b[0m \u001b[43m \u001b[49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1077\u001b[0m \u001b[43m \u001b[49m\u001b[43mcast_to\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcast_to\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1078\u001b[0m \u001b[43m \u001b[49m\u001b[43mremaining_retries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mremaining\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1079\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1080\u001b[0m \u001b[43m \u001b[49m\u001b[43mstream_cls\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstream_cls\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1081\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n","File \u001b[1;32mc:\\Users\\dongh\\.conda\\envs\\llm-perf-bench\\Lib\\site-packages\\anthropic\\_base_client.py:1041\u001b[0m, in \u001b[0;36mSyncAPIClient._request\u001b[1;34m(self, cast_to, options, remaining_retries, stream, stream_cls)\u001b[0m\n\u001b[0;32m 1038\u001b[0m err\u001b[38;5;241m.\u001b[39mresponse\u001b[38;5;241m.\u001b[39mread()\n\u001b[0;32m 1040\u001b[0m log\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRe-raising status error\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m-> 1041\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_make_status_error_from_response(err\u001b[38;5;241m.\u001b[39mresponse) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 1043\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_process_response(\n\u001b[0;32m 1044\u001b[0m cast_to\u001b[38;5;241m=\u001b[39mcast_to,\n\u001b[0;32m 1045\u001b[0m options\u001b[38;5;241m=\u001b[39moptions,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1049\u001b[0m retries_taken\u001b[38;5;241m=\u001b[39moptions\u001b[38;5;241m.\u001b[39mget_max_retries(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmax_retries) \u001b[38;5;241m-\u001b[39m retries,\n\u001b[0;32m 1050\u001b[0m )\n","\u001b[1;31mRateLimitError\u001b[0m: Error code: 429 - {'type': 'error', 'error': {'type': 'rate_limit_error', 'message': 'Number of request tokens has exceeded your daily rate limit (https://docs.anthropic.com/en/api/rate-limits); see the response headers for current usage. Please reduce the prompt length or the maximum tokens requested, or try again later. You may also contact sales at https://www.anthropic.com/contact-sales to discuss your options for a rate limit increase.'}}"]}],"source":["%%time\n","\n","evaluate_model_with_num_shots(\n"," model_name,\n"," datasets,\n"," results_path=results_path,\n"," range_num_shots=[0, 10],\n"," max_new_tokens=max_new_tokens,\n",")"]},{"cell_type":"code","execution_count":41,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["loading d:\\code\\projects\\logical-reasoning\\llm_toolkit\\logical_reasoning_utils.py\n","Evaluating model: o1-preview\n","--------------------------------------------------\n","text: 甄加索是自杀吗\n","--------------------------------------------------\n","label: 不是\n","--------------------------------------------------\n","answer: nan\n","--------------------------------------------------\n","title: 海岸之谜\n","--------------------------------------------------\n","puzzle: 在远离城市喧嚣的海边小屋,一天清晨,邻居发现甄加索僵卧在沙滩上,已无生命迹象。现场没有发现任何打斗的迹象。请问甄加索的死因是什么?\n","--------------------------------------------------\n","truth: 甄加索是一位热爱自然的画家,他每年都会来到这个海边小屋寻找灵感。在他生命的最后几天,他一直在创作一幅描绘海洋生物的画作。在画即将完成的前一天晚上,他骑着自行车外出,打算在海边观赏夜景。然而,他在沙滩上意外发现了一只搁浅的海豚,为了救助这只海豚,他耗费了极大的体力,最终成功将其送回海中。筋疲力尽的甄加索在沙滩上睡着了,由于他患有严重的心脏病,却未告知旁人,在寒冷的海风中,他的心脏停止了跳动。因此,警方在现场只发现了车轮痕迹和未完成的画作,而没有发现任何他杀的迹象。\n","*** Evaluating with num_shots: 10\n","user_prompt: 你是一个情景猜谜游戏的主持人。游戏规则如下:\n","\n","1. 参与者会得到一个谜面,谜面会描述一个简单又难以理解的事件。\n","2. 主持人知道谜底,谜底是谜面的答案。\n","3. 参与者可以询问任何封闭式问题来找寻事件的真相。\n","4. 对于每个问题,主持人将根据实际情况回答以下五个选项之一:是、不是、不重要、回答正确、问法错误。各回答的判断标准如下:\n"," - 若谜面和谜底能找到问题的答案,回答:是或者不是\n"," - 若谜面和谜底不能直接或者间接推断出问题的答案,回答:不重要\n"," - 若参与者提问不是一个封闭式问题或者问题难以理解,回答:问法错误\n"," - 若参与者提问基本还原了谜底真相,回答:回答正确\n","5. 回答中不能添加任何其它信息,也不能省略选项中的任何一个字。例如,不可以把“不是”省略成“不”。\n","\n","请严格按照这些规则回答参与者提出的问题。\n","\n","示例输入和输出: \n","谜面: 在甄家村里,有一个古老的传说:每年南瓜丰收的季节,南瓜田里总有一个最大的南瓜会不翼而飞,村民们对此现象困惑不解。请找出南瓜失踪背后的原因。\n","谜底: 真相原来与一位年迈的农夫有关。这位农夫年轻时,曾与一位美丽的姑娘相恋。他们约定在南瓜丰收的季节结婚。然而,命运弄人,姑娘在婚礼前的一场意外中离世。悲伤的农夫为了纪念心爱的姑娘,每年都会将最大的南瓜偷走,放到姑娘的墓前,以此寄托自己的哀思。这一行为延续了多年,成为了乡村里一个神秘的传说。\n","参与者提出的问题: 偷的人信神吗\n","回答: 不是\n","\n","谜面: 在甄家村里,有一个古老的传说:每年南瓜丰收的季节,南瓜田里总有一个最大的南瓜会不翼而飞,村民们对此现象困惑不解。请找出南瓜失踪背后的原因。\n","谜底: 真相原来与一位年迈的农夫有关。这位农夫年轻时,曾与一位美丽的姑娘相恋。他们约定在南瓜丰收的季节结婚。然而,命运弄人,姑娘在婚礼前的一场意外中离世。悲伤的农夫为了纪念心爱的姑娘,每年都会将最大的南瓜偷走,放到姑娘的墓前,以此寄托自己的哀思。这一行为延续了多年,成为了乡村里一个神秘的传说。\n","参与者提出的问题: 村庄里的人喜欢南瓜嘛\n","回答: 不重要\n","\n","谜面: 在甄家村里,有一个古老的传说:每年南瓜丰收的季节,南瓜田里总有一个最大的南瓜会不翼而飞,村民们对此现象困惑不解。请找出南瓜失踪背后的原因。\n","谜底: 真相原来与一位年迈的农夫有关。这位农夫年轻时,曾与一位美丽的姑娘相恋。他们约定在南瓜丰收的季节结婚���然而,命运弄人,姑娘在婚礼前的一场意外中离世。悲伤的农夫为了纪念心爱的姑娘,每年都会将最大的南瓜偷走,放到姑娘的墓前,以此寄托自己的哀思。这一行为延续了多年,成为了乡村里一个神秘的传说。\n","参与者提出的问题: 是村里的人偷的么\n","回答: 是\n","\n","谜面: 在一个炎热的夏日,乡村的甄家大院的西瓜突然全部不翼而飞。据了解,甄家大院周围并没有其他人家,而且门窗都完好无损,没有任何被撬的痕迹。村民们议论纷纷,猜测这批西瓜究竟去了哪里。你知道西瓜去了哪里吗?\n","谜底: 原来,这批西瓜是被一只巨大的乌鸦偷走了。这只乌鸦为了给自己的孩子们准备食物,它趁着夜色,竟然将甄家大院的西瓜一颗颗地带回了巢穴。第二天,村民们发现了乌鸦的巢穴,里面堆满了西瓜,而这个意外的真相让所有人都忍俊不禁。甄家老爷也感慨地说:“真是世界大了,什么奇事都有!”\n","参与者提出的问题: 挖地道\n","回答: 问法错误\n","\n","谜面: 在一个炎热的夏日,乡村的甄家大院的西瓜突然全部不翼而飞。据了解,甄家大院周围并没有其他人家,而且门窗都完好无损,没有任何被撬的痕迹。村民们议论纷纷,猜测这批西瓜究竟去了哪里。你知道西瓜去了哪里吗?\n","谜底: 原来,这批西瓜是被一只巨大的乌鸦偷走了。这只乌鸦为了给自己的孩子们准备食物,它趁着夜色,竟然将甄家大院的西瓜一颗颗地带回了巢穴。第二天,村民们发现了乌鸦的巢穴,里面堆满了西瓜,而这个意外的真相让所有人都忍俊不禁。甄家老爷也感慨地说:“真是世界大了,什么奇事都有!”\n","参与者提出的问题: 鸟觅食时发现甄家大院有西瓜,飞入大院一颗一颗把西瓜带走\n","回答: 回答正确\n","\n","谜面: 在一个安静的夜晚,小镇上的钟楼突然停止了报时。第二天早晨,人们发现钟楼的管理员甄大勇失踪了,而钟楼的门紧闭,从外面看起来一切正常。小镇上的人们议论纷纷,不知道发生了什么事情。\n","谜底: 真相是,钟楼的管理员甄大勇在夜晚进行例行的钟楼维护时,不慎从钟楼的顶部摔落,但并未死亡,只是昏迷。由于他跌落时砸到了控制时钟报时的机械装置,导致钟声停止。他躺在钟楼底部,但由于门从内部反锁,外面的人无法进入。甄大勇在第二天中午苏醒后,自己打开了门,这才知道自己引发了小镇上的恐慌。\n","参与者提出的问题: 有人身亡吗?\n","回答: 不是\n","\n","谜面: 在一个安静的夜晚,小镇上的钟楼突然停止了报时。第二天早晨,人们发现钟楼的管理员甄大勇失踪了,而钟楼的门紧闭,从外面看起来一切正常。小镇上的人们议论纷纷,不知道发生了什么事情。\n","谜底: 真相是,钟楼的管理员甄大勇在夜晚进行例行的钟楼维护时,不慎从钟楼的顶部摔落,但并未死亡,只是昏迷。由于他跌落时砸到了控制时钟报时的机械装置,导致钟声停止。他躺在钟楼底部,但由于门从内部反锁,外面的人无法进入。甄大勇在第二天中午苏醒后,自己打开了门,这才知道自己引发了小镇上的恐慌。\n","参与者提出的问题: 有人跟甄大勇有仇吗\n","回答: 不重要\n","\n","谜面: 在一个安静的夜晚,小镇上的钟楼突然停止了报时。第二天早晨,人们发现钟楼的管理员甄大勇失踪了,而钟楼的门紧闭,从外面看起来一切正常。小镇上的人们议论纷纷,不知道发生了什么事情。\n","谜底: 真相是,钟楼的管理员甄大勇在夜晚进行例行的钟楼维护时,不慎从钟楼的顶部摔落,但并未死亡,只是昏迷。由于他跌落时砸到了控制时钟报时的机械装置,导致钟声停止。他躺在钟楼底部,但由于门从内部反锁,外面的人无法进入。甄大勇在第二天中午苏醒后,自己打开了门,这才知道自己引发了小镇上的恐慌。\n","参与者提出的问题: 他仅仅是在修钟楼吗\n","回答: 是\n","\n","谜面: 在一个安静的夜晚,小镇上的钟楼突然停止了报时。第二天早晨,人们发现钟楼的管理员甄大勇失踪了,而钟楼的门紧闭,从外面看起来一切正常。小镇上的人们议论纷纷,不知道发生了什么事情。\n","谜底: 真相是,钟楼的管理员甄大勇在夜晚进行例行的钟楼维护时,不慎从钟楼的顶部摔落,但并未死亡,只是昏迷。由于他跌落时砸到了控制时钟报时的机械装置,导致钟声停止。他躺在钟楼底部,但由于门从内部反锁,外面的人无法进入。甄大勇在第二天中午苏醒后,自己打开了门,这才知道自己引发了小镇上的恐慌。\n","参与者提出的问题: 是自然意外还是��为意外\n","回答: 问法错误\n","\n","谜面: 在一个安静的夜晚,小镇上的钟楼突然停止了报时。第二天早晨,人们发现钟楼的管理员甄大勇失踪了,而钟楼的门紧闭,从外面看起来一切正常。小镇上的人们议论纷纷,不知道发生了什么事情。\n","谜底: 真相是,钟楼的管理员甄大勇在夜晚进行例行的钟楼维护时,不慎从钟楼的顶部摔落,但并未死亡,只是昏迷。由于他跌落时砸到了控制时钟报时的机械装置,导致钟声停止。他躺在钟楼底部,但由于门从内部反锁,外面的人无法进入。甄大勇在第二天中午苏醒后,自己打开了门,这才知道自己引发了小镇上的恐慌。\n","参与者提出的问题: 因为甄在钟楼里维修然后昏迷了导致钟楼停止报时\n","回答: 回答正确\n","\n","\n","谜面: {}\n","谜底: {}\n","参与者提出的问题: {}\n","回答: \n","\n"]},{"name":"stderr","output_type":"stream","text":[" 34%|███▎ | 1008/3000 [5:05:31<8:52:41, 16.05s/it]"]}],"source":["%%time\n","\n","model_name =\"o1-preview\"\n","\n","evaluate_model_with_num_shots(\n"," model_name,\n"," datasets,\n"," results_path=results_path,\n"," range_num_shots=[10],\n"," max_new_tokens=max_new_tokens,\n",")"]}],"metadata":{"accelerator":"GPU","application/vnd.databricks.v1+notebook":{"dashboards":[],"environmentMetadata":null,"language":"python","notebookMetadata":{"pythonIndentUnit":4},"notebookName":"07_MAC_+_Qwen2-7B-Instructi_Unsloth_train","widgets":{}},"colab":{"gpuType":"T4","provenance":[]},"kernelspec":{"display_name":"Python 3","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.11.9"}},"nbformat":4,"nbformat_minor":0}
|
notebooks/05b_Anthropic-Models_analysis.ipynb
ADDED
The diff for this file is too large to render.
See raw diff
|
|
requirements.txt
CHANGED
@@ -1,19 +1,3 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
|
4 |
-
black==24.4.0
|
5 |
-
evaluate==0.4.2
|
6 |
-
rouge_score==0.1.2
|
7 |
-
pytest==8.2.1
|
8 |
-
seaborn==0.13.2
|
9 |
-
scikit-learn==1.5.0
|
10 |
-
jupyter
|
11 |
-
ipywidgets
|
12 |
-
packaging
|
13 |
-
langchain_openai==0.1.13
|
14 |
-
wandb==0.17.4
|
15 |
-
transformers==4.43.3
|
16 |
-
sentencepiece==0.2.0
|
17 |
-
einops==0.8.0
|
18 |
-
accelerate==0.32.0
|
19 |
-
peft==0.11.1
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:03e15f17e21d1fd2436cb1f779ac9cece0164e197d6e2a94883aed027491ae4c
|
3 |
+
size 339
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|