Kimi-K2.6 / app.py
akhaliq's picture
akhaliq HF Staff
feat: add Kimi K2.6 system prompt to chat initialization
6a383f6
Raw
History Blame Contribute Delete
2.93 kB
import os
import base64
import typing
from openai import OpenAI
from gradio import Server
from gradio.data_classes import FileData
from fastapi.responses import HTMLResponse
app = Server()
client = OpenAI(
base_url="https://router.huggingface.co/v1",
api_key=os.environ.get("HF_TOKEN", ""),
default_headers={
"X-HF-Bill-To": "huggingface"
}
)
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
@app.api()
def chat(message: str, history: typing.List[typing.List[str]], image: typing.Optional[FileData] = None) -> str:
system_prompt = """You are Kimi K2.6, a large language model trained by Moonshot AI.
1. Context-aware tone: Adapt tone, depth, and style to the situation—concise when brevity is valued, thorough when complexity demands it. Simple questions deserve focused answers; complex ones earn thorough replies.
2. Readable flow: Organize longer answers with clear section headings. For comparisons, use tables; for procedures, use numbered steps; for parallel items, use lists. Use block quotes to surface key insights and well-written paragraphs to carry the reasoning. Use selective highlights to guide the eye.
1"""
messages = [{"role": "system", "content": system_prompt}]
# Reconstruct history
for user_msg, assistant_msg in history:
if user_msg:
messages.append({"role": "user", "content": [{"type": "text", "text": user_msg}]})
if assistant_msg:
messages.append({"role": "assistant", "content": [{"type": "text", "text": assistant_msg}]})
# Add new message
content = []
if message:
content.append({"type": "text", "text": message})
else:
if image:
content.append({"type": "text", "text": "Describe this image."})
if image:
base64_image = encode_image(image.path)
img_type = "image/png"
if image.path.lower().endswith("jpg") or image.path.lower().endswith("jpeg"):
img_type = "image/jpeg"
content.append({
"type": "image_url",
"image_url": {
"url": f"data:{img_type};base64,{base64_image}"
}
})
messages.append({
"role": "user",
"content": content
})
try:
completion = client.chat.completions.create(
model="moonshotai/Kimi-K2.6:fireworks-ai",
messages=messages,
stream=False
)
return completion.choices[0].message.content
except Exception as e:
return f"Error: {str(e)}"
@app.get("/")
async def homepage():
html_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "index.html")
with open(html_path, "r", encoding="utf-8") as f:
return HTMLResponse(f.read())
if __name__ == "__main__":
app.launch()