Spaces:
Running
Running
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 | |
deepseek = OpenAI(api_key = os.getenv("DEEPSEEK_API_KEY"), base_url="https://api.deepseek.com") | |
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 | |
): | |
""" | |
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 = OpenAI(api_key = os.getenv("DEEPSEEK_API_KEY"), base_url="https://api.deepseek.com").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 | |
# 1. Hàm gọi DeepSeek + build/append history | |
def call_deepseek_new( | |
user_prompt, | |
chat_history, # sẽ là [{"role":"user"/"assistant","content":...}, …] | |
# system_prompt: str, | |
# max_tokens: int, | |
# temperature: float, | |
# top_p: float, | |
# file_upload=None, | |
# image_upload=None | |
): | |
# Khởi tạo history nếu None | |
history = chat_history or [] | |
# Append system prompt (chỉ ở lần đầu nếu bạn muốn) | |
# if not any(m["role"]=="system" for m in history): | |
# history.insert(0, {"role": "system", "content": system_prompt}) | |
# Append message mới của user | |
history.append({"role": "user", "content": user_prompt}) | |
# Gọi API DeepSeek Chat (OpenAI-compatible, không stream) | |
response = deepseek.chat.completions.create( | |
model = "deepseek-chat", # hoặc model bạn đã config | |
messages = history, | |
# temperature= temperature, | |
# top_p = top_p, | |
# max_tokens = max_tokens | |
) | |
# Lấy nội dung assistant trả về | |
reply = response.choices[0].message.content | |
# Append vào history | |
history.append({"role": "assistant", "content": reply}) | |
# Trả về 2 outputs: toàn bộ history và đúng reply để render Markdown | |
return history, 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 |