from openai import OpenAI # type: ignore import os def call_openai( user_prompt, chat_history: list[tuple[str, str]], system_prompt, max_tokens, temperature, top_p, file_upload=None, image_upload=None ): if file_upload == None: try: pass except: pass if image_upload == None: try: pass except: pass #read system message messages = [{"role": "system", "content": system_prompt}] #read history for user_chat, assistant_chat in chat_history: if user_chat: messages.append({"role": "user", "content": user_chat}) if assistant_chat: messages.append({"role": "assistant", "content": assistant_chat}) #read output messages.append({"role": "user", "content": user_prompt}) print("## Messages: \n", messages) #debug output #create output response = OpenAI().responses.create( model="gpt-4.1-nano", input=messages, temperature=temperature, top_p=top_p, max_output_tokens=max_tokens ) #read output response = response.output_text print("## Response: ", response) #debug output print("\n") yield response #chat reply def call_deepseek( user_prompt: str, chat_history: list[tuple[str, str]], system_prompt: str, max_tokens: int, temperature: float, top_p: float, file_upload=None, image_upload=None ): deepseek = OpenAI(api_key = os.environ["DEEPSEEK_API_KEY"], base_url="https://api.deepseek.com") """ Gọi DeepSeek Chat qua OpenAI-compatible API (không stream). - file_upload và image_upload tùy chọn (None để bỏ qua xử lý). Trả về: - reply (str): nội dung model sinh ra. """ # 1. Xử lý tùy chọn file (nếu có) if file_upload == None: try: pass except: pass if image_upload == None: try: pass except: pass # 3. Xây dựng messages lịch sử chat messages = [{"role": "system", "content": system_prompt}] for user_msg, ai_msg in chat_history: if user_msg: messages.append({"role": "user", "content": user_msg}) if ai_msg: messages.append({"role": "assistant", "content": ai_msg}) # Thêm prompt hiện tại của user messages.append({"role": "user", "content": user_prompt}) # 4. Gọi API DeepSeek Chat (OpenAI-compatible) response = deepseek.chat.completions.create( model="deepseek-chat", # hoặc model bạn cấu hình messages=messages, temperature=temperature, top_p=top_p, max_tokens=max_tokens ) # 5. Trích xuất kết quả trả về reply = response.choices[0].message.content return reply """ Không có billing nên không xài được replicate """ # import replicate # def deepseek_api_replicate( # user_prompt, # history: list[tuple[str, str]], # system_prompt, # max_new_tokens, # temperature, # top_p): # """ # Gọi DeepSeek Math trên Replicate và trả ngay kết quả. # Trả về: # str hoặc [bytes]: output model sinh ra # """ # # 1. Khởi tạo client và xác thực # # token = os.getenv("REPLICATE_API_TOKEN") # # if not token: # # raise RuntimeError("Missing REPLICATE_API_TOKEN") # bảo mật bằng biến môi trường # client = replicate.Client(api_token="REPLICATE_API_TOKEN") # # 2. Gọi model # output = client.run( # "deepseek-ai/deepseek-math-7b-base:61f572dae0985541cdaeb4a114fd5d2d16cb40dac3894da10558992fc60547c7", # input={ # "system_prompt": system_prompt, # "user_prompt": user_prompt, # "max_new_tokens": max_new_tokens, # "temperature": temperature, # "top_p": top_p # } # ) # # 3. Trả kết quả # return output