Spaces:
Runtime error
Runtime error
shigeru saito
commited on
Commit
·
83f45c7
1
Parent(s):
e34e51b
微調整
Browse files
app.py
CHANGED
@@ -30,9 +30,13 @@ def fetch_folklore(location):
|
|
30 |
with open('folklore.csv', 'r') as f:
|
31 |
reader = csv.DictReader(f)
|
32 |
folklore_lookup = {row['location']: row['folklore'] for row in reader}
|
|
|
33 |
|
34 |
-
#
|
35 |
-
|
|
|
|
|
|
|
36 |
|
37 |
def serialize_agent_action(obj):
|
38 |
if isinstance(obj, AgentAction):
|
@@ -69,13 +73,12 @@ def get_response_from_function_calling(query_text):
|
|
69 |
function_definitions = [
|
70 |
# 関数の定義を作成
|
71 |
{
|
72 |
-
"name": "
|
73 |
"description": "伝承を調べる",
|
74 |
"parameters": {
|
75 |
"type": "object",
|
76 |
"properties": {
|
77 |
"location": {
|
78 |
-
"type": "string",
|
79 |
"description": "伝承を知りたい施設や地名。例: 箱根",
|
80 |
},
|
81 |
},
|
@@ -84,7 +87,7 @@ def get_response_from_function_calling(query_text):
|
|
84 |
}
|
85 |
]
|
86 |
messages = [HumanMessage(content=query_text)]
|
87 |
-
language_model = ChatOpenAI(model_name='gpt-
|
88 |
# 言語モデルを使ってメッセージを予測
|
89 |
message = language_model.predict_messages(
|
90 |
messages, functions=function_definitions)
|
@@ -96,9 +99,11 @@ def get_response_from_function_calling(query_text):
|
|
96 |
|
97 |
# JSON 文字列を辞書に変換
|
98 |
arguments = json.loads(arguments)
|
|
|
|
|
99 |
|
100 |
# 関数を実行してレスポンスを取得
|
101 |
-
function_response = fetch_folklore(location=
|
102 |
# 関数メッセージを作成
|
103 |
function_message = FunctionMessage(
|
104 |
name=function_name, content=function_response)
|
@@ -106,9 +111,9 @@ def get_response_from_function_calling(query_text):
|
|
106 |
messages.append(function_message)
|
107 |
second_response = language_model.predict_messages(
|
108 |
messages=messages, functions=function_definitions)
|
109 |
-
content =
|
110 |
else:
|
111 |
-
content =
|
112 |
return content
|
113 |
|
114 |
# Function Call Agentからレスポンスを取得する関数
|
@@ -183,8 +188,8 @@ if __name__ == "__main__":
|
|
183 |
fn=main,
|
184 |
examples=[
|
185 |
["葛飾区の伝承を教えてください。"],
|
186 |
-
["
|
187 |
-
["
|
188 |
],
|
189 |
inputs=gr.Textbox(
|
190 |
lines=5, placeholder="質問を入力してください"),
|
@@ -193,7 +198,7 @@ if __name__ == "__main__":
|
|
193 |
gr.Textbox(label="Function Callingのレスポンス"),
|
194 |
gr.Textbox(label="Function Calling Agentのレスポンス")
|
195 |
],
|
196 |
-
title="
|
197 |
description="最新のGPTモデルを使用し、LangChain, Function Calling, Function Calling + LangChain Agentの対話モデルのAIから回答を取得するシステムです。以下のインプット例をクリックすると入力欄に自動入力されます。",
|
198 |
example_columns=3,
|
199 |
example_callback=click_example
|
|
|
30 |
with open('folklore.csv', 'r') as f:
|
31 |
reader = csv.DictReader(f)
|
32 |
folklore_lookup = {row['location']: row['folklore'] for row in reader}
|
33 |
+
type_lookup = {row['type']: row['folklore'] for row in reader}
|
34 |
|
35 |
+
# 指定された地点の伝承などを返す。存在しない場合は不明を返す。
|
36 |
+
folklore = folklore_lookup.get((location), f"その地域の伝承は不明です。")
|
37 |
+
type = type_lookup.get((location), f"その地域の伝承は不明です。")
|
38 |
+
print("type:", type)
|
39 |
+
return folklore
|
40 |
|
41 |
def serialize_agent_action(obj):
|
42 |
if isinstance(obj, AgentAction):
|
|
|
73 |
function_definitions = [
|
74 |
# 関数の定義を作成
|
75 |
{
|
76 |
+
"name": "fetch_folklore",
|
77 |
"description": "伝承を調べる",
|
78 |
"parameters": {
|
79 |
"type": "object",
|
80 |
"properties": {
|
81 |
"location": {
|
|
|
82 |
"description": "伝承を知りたい施設や地名。例: 箱根",
|
83 |
},
|
84 |
},
|
|
|
87 |
}
|
88 |
]
|
89 |
messages = [HumanMessage(content=query_text)]
|
90 |
+
language_model = ChatOpenAI(model_name='gpt-4')
|
91 |
# 言語モデルを使ってメッセージを予測
|
92 |
message = language_model.predict_messages(
|
93 |
messages, functions=function_definitions)
|
|
|
99 |
|
100 |
# JSON 文字列を辞書に変換
|
101 |
arguments = json.loads(arguments)
|
102 |
+
location=arguments.get("location")
|
103 |
+
# type=arguments.get("type")
|
104 |
|
105 |
# 関数を実行してレスポンスを取得
|
106 |
+
function_response = fetch_folklore(location=location)
|
107 |
# 関数メッセージを作成
|
108 |
function_message = FunctionMessage(
|
109 |
name=function_name, content=function_response)
|
|
|
111 |
messages.append(function_message)
|
112 |
second_response = language_model.predict_messages(
|
113 |
messages=messages, functions=function_definitions)
|
114 |
+
content = second_response.content
|
115 |
else:
|
116 |
+
content = message.content
|
117 |
return content
|
118 |
|
119 |
# Function Call Agentからレスポンスを取得する関数
|
|
|
188 |
fn=main,
|
189 |
examples=[
|
190 |
["葛飾区の伝承を教えてください。"],
|
191 |
+
["千代田区にはどんな伝承がありますか?"],
|
192 |
+
["江戸川区で有名な伝承?"],
|
193 |
],
|
194 |
inputs=gr.Textbox(
|
195 |
lines=5, placeholder="質問を入力してください"),
|
|
|
198 |
gr.Textbox(label="Function Callingのレスポンス"),
|
199 |
gr.Textbox(label="Function Calling Agentのレスポンス")
|
200 |
],
|
201 |
+
title="東京23区の伝承",
|
202 |
description="最新のGPTモデルを使用し、LangChain, Function Calling, Function Calling + LangChain Agentの対話モデルのAIから回答を取得するシステムです。以下のインプット例をクリックすると入力欄に自動入力されます。",
|
203 |
example_columns=3,
|
204 |
example_callback=click_example
|