Spaces:
Sleeping
Sleeping
| """ | |
| Gemma 4 client β dual-model architecture. | |
| Agent: gemma-4-26B-A4B-it (MoE, generation) | |
| Judge: gemma-4-31B-it (dense, evaluation) | |
| """ | |
| import os | |
| from openai import OpenAI | |
| _client = None | |
| def get_client() -> OpenAI: | |
| global _client | |
| if _client is None: | |
| base_url = os.environ.get("GEMMA_BASE_URL", "https://api.featherless.ai/v1") | |
| api_key = os.environ.get("FEATHERLESS_API_KEY", "") | |
| _client = OpenAI(base_url=base_url, api_key=api_key) | |
| return _client | |
| def get_agent_model() -> str: | |
| return os.environ.get("GEMMA_MODEL", "google/gemma-4-26B-A4B-it") | |
| def get_judge_model() -> str: | |
| return os.environ.get("GEMMA_JUDGE_MODEL", "google/gemma-4-31B-it") | |
| def chat_agent(messages: list[dict], temperature: float = 0.3, max_tokens: int = 1024) -> str: | |
| """Agent call β the model being tested.""" | |
| resp = get_client().chat.completions.create( | |
| model=get_agent_model(), | |
| messages=messages, | |
| temperature=temperature, | |
| max_tokens=max_tokens, | |
| ) | |
| return resp.choices[0].message.content | |
| def chat_judge(messages: list[dict], temperature: float = 0.1, max_tokens: int = 1024) -> str: | |
| """Judge call β the model evaluating the agent.""" | |
| resp = get_client().chat.completions.create( | |
| model=get_judge_model(), | |
| messages=messages, | |
| temperature=temperature, | |
| max_tokens=max_tokens, | |
| ) | |
| return resp.choices[0].message.content | |
| # Backward compat β defaults to agent | |
| def chat(messages: list[dict], temperature: float = 0.3, max_tokens: int = 1024) -> str: | |
| return chat_agent(messages, temperature, max_tokens) | |