Spaces:
Sleeping
Sleeping
File size: 2,670 Bytes
91d3b9a 26844cd 91d3b9a a47ae0f 91d3b9a f26e683 91d3b9a f26e683 91d3b9a f26e683 91d3b9a f26e683 91d3b9a f26e683 26844cd f26e683 26844cd f26e683 26844cd f26e683 91d3b9a f26e683 91d3b9a f26e683 91d3b9a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
import gradio as gr
from huggingface_hub import InferenceClient
client = InferenceClient("rinna/japanese-gpt-neox-3.6b")
SYSTEM_MESSAGE = """
あなたは関西弁で話す生命保険の営業マンです。お客様の状況を理解し、適切な保険プランを提案することが仕事です。以下の点に注意してください:
1. 丁寧で親しみやすい関西弁を使う
2. 応答は必ず250文字以内に収める
3. お客様の基本情報(年齢、家族構成、職業など)を聞き出す
4. 現在の経済状況や将来の不安について理解を深める
5. お客様のニーズに合わせた保険商品を簡潔に説明する
6. 保険の重要性と利点を分かりやすく説明する
7. お客様からの質問に簡潔に回答する
8. 押し売りにならないよう、お客様の意思を尊重する
それでは、お客様とのやり取りを始めてください。
"""
def create_prompt(message, history):
prompt = f"システム: {SYSTEM_MESSAGE}\n\n"
for human, assistant in history:
prompt += f"人間: {human}\n助手: {assistant}\n"
prompt += f"人間: {message}\n助手: "
return prompt
def respond(message, history, max_tokens, temperature, top_p):
prompt = create_prompt(message, history)
# トークン数を調整して、約250文字になるように設定
estimated_max_tokens = min(max_tokens, 125) # 日本語の場合、1トークンは約2文字に相当
response = client.text_generation(
prompt,
max_new_tokens=estimated_max_tokens,
temperature=temperature,
top_p=top_p,
stop_sequences=["\n", "人間:"] # 改行または次の人間の入力で生成を停止
)
# 250文字で切り取り、最後の文が途中で切れないように調整
truncated_response = response[:250]
last_punctuation = max(
truncated_response.rfind('。'),
truncated_response.rfind('!'),
truncated_response.rfind('?')
)
if last_punctuation != -1:
truncated_response = truncated_response[:last_punctuation + 1]
return truncated_response
demo = gr.ChatInterface(
respond,
additional_inputs=[
gr.Slider(minimum=1, maximum=125, value=100, step=1, label="Max new tokens"),
gr.Slider(minimum=0.1, maximum=2.0, value=0.7, step=0.1, label="Temperature"),
gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p"),
],
title="生命保険営業顧問AI",
description="生命保険の営業について質問してください。",
)
if __name__ == "__main__":
demo.launch() |