File size: 4,641 Bytes
ee9db7b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5119650
c01e800
 
ee9db7b
 
 
e45b7ca
b4e13a0
 
 
 
 
 
 
 
 
 
 
 
 
d116f33
 
 
 
 
 
 
b4e13a0
 
 
d116f33
ee9db7b
 
 
 
 
 
 
 
434f9e3
a1f9461
0015b5c
 
434f9e3
4bef32d
d5e4a67
a1f9461
5183c5a
ee9db7b
ae908fe
ee9db7b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e4d4642
ee9db7b
 
 
 
c8d4098
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import openai
import gradio as gr
import pandas as pd
import os
import sys
import datetime
import boto3

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"])

    if os.environ["PROMPT2"] not in message:
        response = openai.ChatCompletion.create(
          model="gpt-3.5-turbo",
          # model="gpt-4",
          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])

    gr.Markdown(
        """
        ### 【免責事項】
        ・本サービスの出力結果には誤りが含まれることがあります。出力結果を使用することによりサービス利用者が損害を被った場合でも、その理由及び原因を問わず当方は一切責任を負わないものとし、 利用者は、本サービスの利用によりこれに同意したものとみなします。
        ・当方は、サービス利用者が本サービスを通じて得た情報等につき、その正確性および特定の目的への適合性等について、いかなる保証もしません。
        ・当方は、サービス利用者が他の利用者あるいは第三者との間に本サービスを通じて提供された情報によって生じた権利侵害等の紛争に関して一切責任を負いません。
        ・サービス利用者による過誤、管理不十分、または第三者による不正使用等により、利用者または第三者が損害を被った場合、当方は当該損害に関して一切責任を負いません。
        
        ### 【取得データの利用目的】
        ・本サービスで取得したデータは大規模言語モデル等の機械学習モデルの作成およびAIの研究開発に利用し、作成されたモデルは商用利用される場合があります。
        ・取得したデータは商用利用可能なデータセットとして個人、大学等の団体、法人などに提供する場合があります。
        """)
    
if __name__ == "__main__":
    demo.queue(max_size=20, concurrency_count=10).launch()