import openai import gradio as gr import os from pydub import AudioSegment import time #openai.api_key = os.environ.get("OPENAI_API_KEY") conversation_history=[] def initial_prompt(): #openai.api_key = os.environ.get("OPENAI_API_KEY") global conversation_history conversation_history.append(f"""Türkçe doğal dil işleme fonksiyonlarını yerine getiren başarılı ve yetenekli bir dil modeli gibi davran. Yeteneklerin şu şekilde : [ "1: Senden duygu analizi yapman istendiğinde cümlelerin pozitif mi yoksa negatif mi olduğunu yüzdesel değeri ile söyleyeceksin ve sebebini açıklayacaksın.", "2: Cümlenin NER'lerini çıkarman yada ayırman istendiğinde o cümleleri NER'lerine ayırarak ve NER tipini belirterek geri döneceksin. Argo ve küfür metinlerini de NER listene dahil edeceksin.", "3: Sana verilen metnin özeti istendiğinde özetini çıkaracaksın.", "4: Cümlenin kategorik sınıflandırılması istendiğinde o cümlenin yada metnin ["magazin", "spor", "politika", "ekonomi", "eğitim", "turizm"] sektörlerinden en yüksek olasılığa sahip olanı yüzdesel değeri ile beraber döneceksin.", "5: Verilen metnin anafikri istendiğinde, o metinde asıl anlatılmak istenenin ne olduğunu açıklayarak geri döneceksin." ] Argo ve küfürlü cümlelerinde analizini yaparak geri döneceksin. """) #"6: Metnin bütün dil özelliklerini çıkarmanı istediğimde önceki 5 maddeyi sırasıyla uygulayacak ve sonuclarını döneceksin." while True: try: completion = openai.ChatCompletion.create( model="gpt-4", messages=[{"role": "system", "content": " ".join([str(item) for item in conversation_history])}], temperature=0.7, max_tokens=7500, ) message = completion.choices[0].message['content'] print(message) break except Exception as e: time.sleep(10) continue #message = completion.choices[0].message['content'] print(message) #initial_prompt() def handle_input( input_str : str, temperature, max_tokens, top_p_input, presence_penalty, frequency_penalty ): global conversation_history if len(conversation_history) == 0: initial_prompt() if len(conversation_history) >=3: conversation_history = conversation_history[:1] #+ conversation_history[-5:] conversation_history.append(f"{input_str}\n") content = " ".join([str(item) for item in conversation_history]) while True: try: completion = openai.ChatCompletion.create( model="gpt-4", messages=[{"role": "assistant", "content": content}], temperature=temperature, max_tokens=max_tokens, presence_penalty=presence_penalty, frequency_penalty=frequency_penalty, top_p = top_p_input, #stream = stream_input ) message = completion.choices[0].message['content'] break except Exception as e: time.sleep(5) continue conversation_history.append(f"{message}\n") return message def get_model_reply(query,api_key,temperature, max_tokens,top_p_input, presence_penalty, frequency_penalty,context=[]): context += [query] openai.api_key = api_key response = handle_input(query, temperature, max_tokens,top_p_input, presence_penalty, frequency_penalty) context += [response] responses = [(u,b) for u,b in zip(context[::2], context[1::2])] return responses, context def speech_2_text(audio,api_key, context=[]): openai.api_key = api_key audio_file= open(audio, "rb") transcript = openai.Audio.transcribe("whisper-1", audio_file) prompt = transcript.text context += [prompt] completion = openai.ChatCompletion.create( model="gpt-4", messages=[{"role": "user", "content": prompt}], max_tokens=7500, ) response = completion.choices[0].message['content'] context += [response] responses = [(u,b) for u,b in zip(context[::2], context[1::2])] return responses, context with gr.Blocks(css="#chatbot {overflow-y:auto; min-height:400px;} ") as dialog_app: gr.Markdown( """ # Doğal Dil İşleme Özellik Çıkarımı Özelliklerini çıkarmak için bir cümle giriniz. Örn: Türkiye'nin en büyük turistik bölgelerinden biri olan Antalya, yaz aylarında binlerce turisti ağırlıyor. Not: Size ait API Key girmeyi unutmayın!! """ ) with gr.Tab("ChatBot"): with gr.Row(): with gr.Column(scale=1, min_width=600): api_key = gr.Textbox(label="Your API Key", type="password", required=True) temperature_input = gr.inputs.Slider(minimum=0, maximum=1.0, default=0.5, step=0.01, label="Temperature") max_tokens_input = gr.inputs.Slider(minimum=1, maximum=7500, default=50, step=10, label="Max Tokens") top_p_input = gr.inputs.Slider(minimum=0.1, maximum=1.0, default=0.5, step=0.01, label="Top P") presence_penalty_input = gr.inputs.Slider(minimum=0.0, maximum=1.0, default=0.0, step=0.1, label="Presence Penalty") frequency_penalty_input = gr.inputs.Slider(minimum=0.0, maximum=1.0, default=0.0, step=0.1, label="Frequency Penalty") #stream_input = gr.inputs.Checkbox(label="Stream") with gr.Column(scale=2, min_width=600): chatbot = gr.Chatbot(elem_id="chatbot") state = gr.State([]) txt = gr.Textbox( show_label=False, placeholder="Enter text and press enter" ).style(container=False) txt.submit(get_model_reply, [txt, api_key, temperature_input, max_tokens_input,top_p_input, presence_penalty_input,frequency_penalty_input, state], [chatbot, state]) txt.submit(lambda :"", None, txt) dialog_app.launch()