File size: 2,451 Bytes
3db952c 79cade0 a4d8363 79cade0 3db952c 79cade0 a4d8363 3db952c 79cade0 a4d8363 79cade0 3db952c 79cade0 3db952c 79cade0 3db952c 79cade0 3db952c bae9f36 0302bf4 79cade0 ec64b54 79cade0 3db952c 59c1b45 79cade0 3db952c 79cade0 b2d2790 79cade0 fa42334 547e452 56a0903 79cade0 bae9f36 3db952c 79cade0 |
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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# Hugging Face LLaMA Recipes 参照: https://github.com/huggingface/huggingface-llama-recipes/blob/main/inference-api.ipynb
# huggingface-llama-recipes: https://github.com/huggingface/huggingface-llama-recipes/tree/main
import gradio as gr
from openai import OpenAI
import os
import httpx
# 環境変数からHugging Faceのアクセストークンを取得
ACCESS_TOKEN = os.getenv("HF_TOKEN")
# httpx.Clientを明示的に指定
http_client = httpx.Client(base_url="https://api-inference.huggingface.co/v1/")
# OpenAIクライアントを初期化
client = OpenAI(
api_key=ACCESS_TOKEN,
http_client=http_client,
)
def respond(
message,
history: list[tuple[str, str]],
system_message,
max_tokens,
temperature,
top_p,
):
# システムメッセージを含むメッセージリストを作成
messages = [{"role": "system", "content": system_message}]
# 既存の履歴をメッセージリストに追加
for val in history:
if val[0]:
messages.append({"role": "user", "content": val[0]})
if val[1]:
messages.append({"role": "assistant", "content": val[1]})
# 新しいユーザーのメッセージをメッセージリストに追加
messages.append({"role": "user", "content": message})
response = ""
# チャット補完を非同期にリクエスト
for message in client.chat.completions.create(
model="Sakalti/model-3",
max_tokens=max_tokens,
stream=True,
temperature=temperature,
top_p=top_p,
messages=messages,
):
token = message.choices[0].delta.content
response += token
yield response
# Gradioチャットボットを初期化
chatbot = gr.Chatbot(height=600)
# Gradioチャットインターフェースを作成
demo = gr.ChatInterface(
respond,
additional_inputs=[
gr.Textbox(value="", label="System message"),
gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
gr.Slider(minimum=0.1, maximum=4.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",
),
],
fill_height=True,
chatbot=chatbot,
theme="Nymbo/Nymbo_Theme",
)
# インターフェースを起動
if __name__ == "__main__":
demo.launch() |