Commit ·
d550597
1
Parent(s): 60d9df1
Implement initial project structure and setup
Browse files- .gitignore +3 -0
- all_top_10_data.csv +0 -0
- app.py +85 -0
- appointment.relation.csv +104 -0
- requirements.txt +7 -0
.gitignore
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
.venv/
|
| 2 |
+
*.un~
|
| 3 |
+
.env
|
all_top_10_data.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
app.py
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
import gradio as gr
|
| 3 |
+
import pandas as pd
|
| 4 |
+
from openai import OpenAI
|
| 5 |
+
from loguru import logger
|
| 6 |
+
import os
|
| 7 |
+
from dotenv import load_dotenv
|
| 8 |
+
|
| 9 |
+
# コードネーム:カレラ
|
| 10 |
+
|
| 11 |
+
# 環境変数の読み込み
|
| 12 |
+
load_dotenv()
|
| 13 |
+
|
| 14 |
+
# OpenAI クライアント初期化
|
| 15 |
+
try:
|
| 16 |
+
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
|
| 17 |
+
logger.success("OpenAI クライアントの初期化に成功しました")
|
| 18 |
+
except Exception as e:
|
| 19 |
+
logger.error(f"OpenAI クライアントの初期化に失敗しました: {e}")
|
| 20 |
+
client = None
|
| 21 |
+
|
| 22 |
+
# 回答生成関数( account_relation_output を list で受け取る)
|
| 23 |
+
def panamera_answer(query, account_relation_output):
|
| 24 |
+
if not client:
|
| 25 |
+
return "OpenAI クライアントが初期化されていません。"
|
| 26 |
+
|
| 27 |
+
try:
|
| 28 |
+
# 入力データの整形(list → DataFrame)
|
| 29 |
+
|
| 30 |
+
account_relation_df = pd.DataFrame(account_relation_output) # ← list形式に対応
|
| 31 |
+
|
| 32 |
+
|
| 33 |
+
|
| 34 |
+
# アカウント関連情報の整形
|
| 35 |
+
account_text = account_relation_df.astype(str).agg(' '.join, axis=1).tolist()
|
| 36 |
+
account_text_combined = "\n".join(account_text)
|
| 37 |
+
|
| 38 |
+
# プロンプト生成
|
| 39 |
+
prompt = f"""
|
| 40 |
+
あなたは優秀な営業アシスタントです。
|
| 41 |
+
以下は、過去に検索された訪問情報です。
|
| 42 |
+
この情報をもとに、ユーザーの新しい質問「{query}」に答えてください。
|
| 43 |
+
|
| 44 |
+
|
| 45 |
+
|
| 46 |
+
【アカウント関連情報】
|
| 47 |
+
{account_text_combined}
|
| 48 |
+
"""
|
| 49 |
+
|
| 50 |
+
# OpenAI による回答生成
|
| 51 |
+
response = client.chat.completions.create(
|
| 52 |
+
model="gpt-4",
|
| 53 |
+
messages=[
|
| 54 |
+
{"role": "system", "content": "あなたは優秀な営業アシスタントです。"},
|
| 55 |
+
{"role": "user", "content": prompt}
|
| 56 |
+
],
|
| 57 |
+
temperature=0.7
|
| 58 |
+
)
|
| 59 |
+
answer = response.choices[0].message.content
|
| 60 |
+
return answer
|
| 61 |
+
|
| 62 |
+
except Exception as e:
|
| 63 |
+
logger.error(f"回答生成に失敗しました: {e}")
|
| 64 |
+
return "回答生成に失敗しました。"
|
| 65 |
+
|
| 66 |
+
# Gradio UI
|
| 67 |
+
with gr.Blocks(title="カレラ") as demo:
|
| 68 |
+
gr.Markdown("## 🧠 カレラ:訪問情報に基づくAI回答ツール")
|
| 69 |
+
|
| 70 |
+
with gr.Row():
|
| 71 |
+
query_input = gr.Textbox(label="ユーザークエリ", placeholder="例: この訪問の日付は?")
|
| 72 |
+
account_relation_output = gr.Textbox(label="アカウント関連情報(list形式)", lines=10) # ← list形式に変更
|
| 73 |
+
|
| 74 |
+
answer_output = gr.Textbox(label="AIによる回答", lines=10)
|
| 75 |
+
answer_btn = gr.Button("回答生成", variant="primary")
|
| 76 |
+
|
| 77 |
+
answer_btn.click(
|
| 78 |
+
fn=panamera_answer,
|
| 79 |
+
inputs=[query_input, account_relation_output],
|
| 80 |
+
outputs=[answer_output]
|
| 81 |
+
)
|
| 82 |
+
|
| 83 |
+
# MCPサーバとして起動
|
| 84 |
+
if __name__ == "__main__":
|
| 85 |
+
demo.launch(mcp_server=True)
|
appointment.relation.csv
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
new_visitstart,description,new_kekkagaiyou,Subject,new_opportunity
|
| 2 |
+
2025/7/1,,,,48b6ede06c
|
| 3 |
+
2025/7/1,,,,c524fd19d7
|
| 4 |
+
2025/7/1,,,,ed189b1488
|
| 5 |
+
2025/7/1,,,,f21eed10ab
|
| 6 |
+
2025/7/1,,,,
|
| 7 |
+
2025/7/2,,,,5bf189a920
|
| 8 |
+
2025/7/2,,,,ed189b1488
|
| 9 |
+
2025/7/3,,,,48b6ede06c
|
| 10 |
+
2025/7/3,,,,5bf189a920
|
| 11 |
+
2025/7/4,,,,5bf189a920
|
| 12 |
+
2025/7/4,�h�����C�����݂̌v����e�Ɣr�������̌���ۑ���m�F,AA�����Ԃ̐��Y�\�͑����ɔ����A�����h�����C���̔r�������\�͂����E�ɒB���錩���݂ł��邱�Ƃ������B��������A�r����̌��i���ɑΉ�����K�v������Ƃ̎w�E����B����̏��������ł͑Ή�����ł��邽�߁A�V�K�ݔ������̉\���������Ɣ��f�B�S���҂��A����̒�Ă����}����p�����m�F�B,����K��E�Č��q�A�����O,a3f1922b50
|
| 13 |
+
2025/7/4,,,,c524fd19d7
|
| 14 |
+
2025/7/4,,,,ed189b1488
|
| 15 |
+
2025/7/4,,,,f21eed10ab
|
| 16 |
+
2025/7/5,,,,159e2ee610
|
| 17 |
+
2025/7/5,,,,2bae27047d
|
| 18 |
+
2025/7/6,,,,159e2ee610
|
| 19 |
+
2025/7/6,,,,ed189b1488
|
| 20 |
+
2025/7/6,,,,f21eed10ab
|
| 21 |
+
2025/7/6,,,,f21eed10ab
|
| 22 |
+
2025/7/7,,,,159e2ee610
|
| 23 |
+
2025/7/7,,,,2bae27047d
|
| 24 |
+
2025/7/7,,,,2bae27047d
|
| 25 |
+
2025/7/7,���������̑I��āi�ÏW���a�{�������j���,�ÏW���a�ɂ��O������UF���ɂ�鍂�x������g�ݍ��킹����Ă����{�B�������̍ė��p�\����A�r��������肵�ăN���A�ł���_�������B�Z�p���傩��́u�������������A�����ɒl����v�Ƃ̕]����B����A�����\�͂�ݒu�X�y�[�X�Ɋւ����̓I�Ȍ�����i�߂邱�ƂƂȂ����B,�Z�p��āi�ꎟ�j,a3f1922b50
|
| 26 |
+
2025/7/8,,,,48b6ede06c
|
| 27 |
+
2025/7/8,,,,5bf189a920
|
| 28 |
+
2025/7/8,,,,ed189b1488
|
| 29 |
+
2025/7/8,,,,f21eed10ab
|
| 30 |
+
2025/7/8,,,,
|
| 31 |
+
2025/7/9,,,,159e2ee610
|
| 32 |
+
2025/7/9,,,,5bf189a920
|
| 33 |
+
2025/7/9,���n�m�F�Ɗ����ݔ��Ƃ̐ڑ��\����,���n�H��ɂĊ����r�������ݔ��̔z�u�Ɣz�ǃ��[�g���m�F�B�V�ݑ��u�̐ݒu�X�y�[�X�͌����Ă��邪�A�����ݔ��Ƃ̐ڑ��͋Z�p�I�ɉ\�Ɣ��f�B�r���̗��ʕϓ����傫�����߁A�����\�͂ɗ]�T����������K�v������Ƃ̎w�E����B����S���҂Ƃ̘A�g���ǍD�ŁA����̐v�Ɍ����������W���i�W�B,�����\�́E�ݒu�X�y�[�X�m�F,a3f1922b50
|
| 34 |
+
2025/7/10,���������z�ƃ����j���O�R�X�g�̊T�Z���,�����\��200?/����z�肵���T�Z���ς�B���������z�͗\�Z���Ɏ��܂錩���݂ŁA�����j���O�R�X�g�������ݔ����ጸ�\�Ɛ����B�w�����傩��́u�R�X�g�ʂ͑Ó������A�Г��g�c�ɂ͏ڍ������K�v�v�Ƃ̃R�����g����B����͎d�l���ƂƂ��ɏC�����ς��o������j�ō��ӁB,�T�Z���ϒ�,a3f1922b50
|
| 35 |
+
2025/7/10,,,,c524fd19d7
|
| 36 |
+
2025/7/11,,,,2bae27047d
|
| 37 |
+
2025/7/11,,,,f21eed10ab
|
| 38 |
+
2025/7/12,,,,159e2ee610
|
| 39 |
+
2025/7/12,,,,2bae27047d
|
| 40 |
+
2025/7/12,,,,c524fd19d7
|
| 41 |
+
2025/7/12,,,,c524fd19d7
|
| 42 |
+
2025/7/12,,,,f21eed10ab
|
| 43 |
+
2025/7/13,�����\�́A��������A�����e�i���X���Ȃǂ̏ڍd�l���l�߂�,�Z�p����Ƃ̑ł����킹�ɂāA�����\�͂̒������A���u�Ď��@�\�A��i�����̎������ȂǁA��̓I�Ȏd�l�v�]�𑽐���́B���Ƀ����e�i���X���ƈ��S���Ɋւ���v���������A�v�ɔ��f����K�v����B�������A�ߋ�����������Љ�A�M�����̍������A�s�[���B����A�C���d�l���ƌ��ς��o�\��B,�ڍd�l�ł����킹,a3f1922b50
|
| 44 |
+
2025/7/13,,,,ed189b1488
|
| 45 |
+
2025/7/14,,,,159e2ee610
|
| 46 |
+
2025/7/14,,,,c524fd19d7
|
| 47 |
+
2025/7/15,,,,2bae27047d
|
| 48 |
+
2025/7/15,,,,43228b23c3
|
| 49 |
+
2025/7/15,,,,c524fd19d7
|
| 50 |
+
2025/7/17,,,,43228b23c3
|
| 51 |
+
2025/7/17,,,,43228b23c3
|
| 52 |
+
2025/7/17,,,,43228b23c3
|
| 53 |
+
2025/7/17,,,,5bf189a920
|
| 54 |
+
2025/7/17,�C����̌��Ϗ��Ǝd�l�����o,�Z�p����̗v�]�f�����d�l���ƁA��i�g�p�ʂ�d�͏�����œK�������C�����ς��o�B�w�����傩��́u���ЂƂ̔�r�������~�����v�Ƃ̗v�]����B�Г��g�c�͋Z�p����ŏ��F�ς݁A�w������ł̌������i�s���B����͑��В�ĂƂ̔�r���������Q���邱�ƂɁB,�C�����ρE�d�l����o,a3f1922b50
|
| 55 |
+
2025/7/17,,,,f21eed10ab
|
| 56 |
+
2025/7/18,,,,48b6ede06c
|
| 57 |
+
2025/7/18,�Г����F�v���Z�X�̐i���m�F,�Z�p���傩��͐������F�Ă���A�w������ł̓R�X�g�Ɣ[���̔�r�������i�s���B����2�Ђ������Ă��o�Ă��邪�A���������ƕێ�Ή��œ��ЈĂ��D�ʂƂ̕]������B�w�����咷���u�ŏI���f�͗��T���ɍs���\��v�Ƃ̏���B,�g�c�m�F,a3f1922b50
|
| 58 |
+
2025/7/18,���В�ĂƂ̔�r�������o���A�D�ʐ������,����A�ЁEB�ЂƂ̔�r������B���������A�ݒu�ʐρA�ێ�_����e�A�������тȂǂ��ʓI�ɔ�r�BAA�����ԑ�����́u���ЈĂ��ł��o�����X���ǂ��A������̉^�p�����S�ł���v�Ƃ̕]����B�w�����咷���u�Г��ŏI�g�c�ɐi�߂�v�Ƃ̃R�����g����B,���Д�r�Ή�,a3f1922b50
|
| 59 |
+
2025/7/19,,,,43228b23c3
|
| 60 |
+
2025/7/19,,,,43228b23c3
|
| 61 |
+
2025/7/19,,,,5bf189a920
|
| 62 |
+
2025/7/19,�_������i�[���A�ۏA�ێ�_��j�ɂ��Ē���,�[����2026�N2�����A�ۏ؊��Ԃ�3�N�A�ێ�_��͔N���_���{�ً}�Ή����܂ޓ��e�ō��ӁB���i�ʂł͎�̒������s���A�ŏI���ς�BAA�����ԑ�����́u�����ʂ͖��Ȃ��A�Г��ŏI���F��҂̂݁v�Ƃ̉B,�ŏI����,a3f1922b50
|
| 63 |
+
2025/7/19,,,,c524fd19d7
|
| 64 |
+
2025/7/19,,,,c524fd19d7
|
| 65 |
+
2025/7/20,,,,43228b23c3
|
| 66 |
+
2025/7/20,,,,5bf189a920
|
| 67 |
+
2025/7/20,,,,5bf189a920
|
| 68 |
+
2025/7/20,,,,ed189b1488
|
| 69 |
+
2025/7/21,,,,2bae27047d
|
| 70 |
+
2025/7/21,,,,c524fd19d7
|
| 71 |
+
2025/7/23,,,,43228b23c3
|
| 72 |
+
2025/7/23,,,,7bc6f6569c
|
| 73 |
+
2025/7/24,,,,159e2ee610
|
| 74 |
+
2025/7/24,,,,2bae27047d
|
| 75 |
+
2025/7/24,,,,5bf189a920
|
| 76 |
+
2025/7/24,,,,5bf189a920
|
| 77 |
+
2025/7/25,,,,43228b23c3
|
| 78 |
+
2025/7/25,,,,5bf189a920
|
| 79 |
+
2025/7/25,,,,c524fd19d7
|
| 80 |
+
2025/7/25,,,,ed189b1488
|
| 81 |
+
2025/7/25,,,,f21eed10ab
|
| 82 |
+
2025/7/25,,,,
|
| 83 |
+
2025/7/26,,,,43228b23c3
|
| 84 |
+
2025/7/26,,,,48b6ede06c
|
| 85 |
+
2025/7/26,,,,7bc6f6569c
|
| 86 |
+
2025/7/26,,,,7bc6f6569c
|
| 87 |
+
2025/7/26,,,,ed189b1488
|
| 88 |
+
2025/7/26,,,,ed189b1488
|
| 89 |
+
2025/7/26,,,,f21eed10ab
|
| 90 |
+
2025/7/27,,,,2bae27047d
|
| 91 |
+
2025/7/27,,,,2bae27047d
|
| 92 |
+
2025/7/27,,,,c524fd19d7
|
| 93 |
+
2025/7/27,,,,c524fd19d7
|
| 94 |
+
2025/7/28,,,,5bf189a920
|
| 95 |
+
2025/7/28,�_�Ă̓��e�m�F�ƍŏI���^����,�_�Ăɑ���@������̊m�F���������A���e�ɖ��Ȃ��Ƃ̉�B�Z�p����E�w������E�@������̎O�҂���ŏI���F������A�_������Ɍ����������������B,�_��O�ŏI�m�F,a3f1922b50
|
| 96 |
+
2025/7/28,,,,c524fd19d7
|
| 97 |
+
2025/7/28,�ڋq�ۑ�̃q�A�����O,,,ed189b1488
|
| 98 |
+
2025/7/28,,,,ed189b1488
|
| 99 |
+
2025/7/28,,,,ed189b1488
|
| 100 |
+
2025/7/29,,,,43228b23c3
|
| 101 |
+
2025/7/30,,,,2bae27047d
|
| 102 |
+
2025/7/30,�_�ɏ����E�������{,AA�����Ԗ{�ЂɂĐ����_�������B�_����z�A�[���A�ێ�_����e���ׂč��Ӎς݁B�[����2026�N2���\��B����͐v�ڍׂ̋l�߂Ɛ���H���Ɉڍs�B�����̔S�苭���c�Ɗ������]������A�����r�������Č��ł�����������\������B,�_�����,a3f1922b50
|
| 103 |
+
2025/7/30,,,,f21eed10ab
|
| 104 |
+
2025/7/31,,,,7bc6f6569c
|
requirements.txt
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
gradio[mcp]
|
| 2 |
+
numpy
|
| 3 |
+
pandas
|
| 4 |
+
loguru
|
| 5 |
+
openai
|
| 6 |
+
scikit-learn
|
| 7 |
+
supabase
|