|
import openai |
|
import gradio as gr |
|
import pandas as pd |
|
import os |
|
import sys |
|
import datetime |
|
import boto3 |
|
from langdetect import detect |
|
|
|
openai.api_key = os.environ["OPENAI_API_KEY"] |
|
|
|
s3 = boto3.client( |
|
's3', |
|
aws_access_key_id=os.environ["AWS_ACCESS_KEY_ID"], |
|
aws_secret_access_key=os.environ["AWS_SECRET_ACCESS_KEY"], |
|
region_name='ap-northeast-1' |
|
) |
|
|
|
bucket_name = 'kunishou-kaggle' |
|
|
|
def evaluate( |
|
instruction, |
|
input=None, |
|
): |
|
|
|
message = f'{instruction} {os.environ["PROMPT"]} {input}' |
|
|
|
message = message[:200] |
|
|
|
df_result = pd.DataFrame([[instruction, input, None, None],],columns=["instruction" ,"input", "output", "total_tokens"]) |
|
|
|
lang = detect(message) |
|
|
|
if os.environ["PROMPT2"] not in message and lang == "ja": |
|
response = openai.ChatCompletion.create( |
|
model="gpt-3.5-turbo", |
|
|
|
messages=[ |
|
{"role": "system", "content": "You are a useful assistant."}, |
|
{"role": "user", "content": message }, |
|
], |
|
n=1, |
|
presence_penalty=-2.0, |
|
max_tokens=512 |
|
) |
|
|
|
df_result.iloc[0, 2] = response["choices"][0]["message"]["content"] |
|
df_result.iloc[0, 3] = response["usage"]["total_tokens"] |
|
|
|
now = datetime.datetime.now() |
|
file_name = f'chatgpt3/test_{now.strftime("%Y%m%d_%H%M%S")}.csv' |
|
|
|
csv_buffer = df_result.to_csv(index=False) |
|
s3.put_object(Bucket=bucket_name, Key=file_name, Body=csv_buffer) |
|
|
|
else: |
|
df_result.iloc[0, 2] = "" |
|
df_result.iloc[0, 3] = 0 |
|
|
|
return df_result.iloc[0, 2] |
|
|
|
|
|
with gr.Blocks() as demo: |
|
|
|
gr.Markdown( |
|
""" |
|
# 🐸🐄🐹🐧🐷🌸 Rapid GPT-3.5 🚀🐪🦒🐘🐼🐓🐣 |
|
|
|
※ GPT-4モデルをGPT-3.5モデルに変更して提供しています。 |
|
|
|
・GPT-3.5が利用可能なサービスになります。なお、本サービスに入力した内容や出力結果は大規模言語モデル等の機械学習モデルの作成、AIの研究開発に利用いたします(その代わりにAPI料金はすべて当方が負担します)。 |
|
・誰でも無料で使用することができます。自由に触ってみて下さい! |
|
・アクセスが集中すると動作が遅くなる場合があります。 |
|
|
|
詳細は以下のnote記事をご参考下さい。 |
|
|
|
https://note.com/kun1emon/n/n09098da8f39e |
|
""") |
|
|
|
txt = gr.Textbox(lines=2, label="Instruction", placeholder="ここに指示を入力してください.", max_lines=3) |
|
txt_2 = gr.Textbox(lines=2, label="Additional text", placeholder="文章を要約、翻訳したい場合などに任意で付属テキストを入力して下さい.", max_lines=3) |
|
txt_3 = gr.Textbox(lines=8, label="Output") |
|
btn = gr.Button(value="下記の免責事項・利用目的に同意して送信") |
|
btn.click(evaluate, inputs=[txt, txt_2], outputs=[txt_3], concurrency_limit=10) |
|
|
|
gr.Markdown( |
|
""" |
|
### 【免責事項】 |
|
・本サービスの出力結果には誤りが含まれることがあります。出力結果を使用することによりサービス利用者が損害を被った場合でも、その理由及び原因を問わず当方は一切責任を負わないものとし、 利用者は、本サービスの利用によりこれに同意したものとみなします。 |
|
・当方は、サービス利用者が本サービスを通じて得た情報等につき、その正確性および特定の目的への適合性等について、いかなる保証もしません。 |
|
・当方は、サービス利用者が他の利用者あるいは第三者との間に本サービスを通じて提供された情報によって生じた権利侵害等の紛争に関して一切責任を負いません。 |
|
・サービス利用者による過誤、管理不十分、または第三者による不正使用等により、利用者または第三者が損害を被った場合、当方は当該損害に関して一切責任を負いません。 |
|
|
|
### 【取得データの利用目的】 |
|
・本サービスで取得したデータは大規模言語モデル等の機械学習モデルの作成およびAIの研究開発に利用し、作成されたモデルは商用利用される場合があります。 |
|
・取得したデータは商用利用可能なデータセットとして個人、大学等の団体、法人などに提供する場合があります。 |
|
""") |
|
|
|
if __name__ == "__main__": |
|
demo.queue(max_size=20).launch(max_threads=10) |