Spaces:
Sleeping
Sleeping
| import os | |
| from huggingface_hub import InferenceClient | |
| client = InferenceClient( | |
| provider="featherless-ai", | |
| api_key=os.environ["HF_TOKEN_inf"] | |
| ) | |
| def chat_with_model(message, history_messages, perspective): | |
| """ | |
| Streaming generator for Gradio chatbot. | |
| Inputs: | |
| - message: str | |
| - history_messages: list[{"role": ..., "content": ...}] | |
| - perspective: str | |
| Yields: | |
| - (updated_messages_for_chatbot, updated_messages_for_state) | |
| """ | |
| # Build messages for the API | |
| messages = [] | |
| if perspective and perspective.strip(): | |
| messages.append({"role": "system", "content": f"Adopt this perspective: {perspective.strip()}"}) | |
| for m in history_messages: | |
| if "role" in m and "content" in m: | |
| messages.append({"role": m["role"], "content": m["content"]}) | |
| messages.append({"role": "user", "content": message}) | |
| # Prepare base history | |
| reply = "" | |
| base = history_messages + [{"role": "user", "content": message}] | |
| # Start streaming from HF Inference | |
| stream = client.chat.completions.create( | |
| model="mistralai/Mistral-7B-Instruct-v0.2", | |
| messages=messages, | |
| max_tokens=512, | |
| stream=True, | |
| ) | |
| for event in stream: | |
| if event.choices and event.choices[0].delta: | |
| token = event.choices[0].delta.content or "" | |
| if token: | |
| reply += token | |
| updated = base + [{"role": "assistant", "content": reply}] | |
| yield updated, updated | |