Commit 11526eee authored by Your Name's avatar Your Name

Add enable_thinking parameter to chat completion

- Add enable_thinking parameter to ChatCompletionRequest
- When enable_thinking=True, inject agentic system prompt to force thinking/reasoning
- Uses AgenticTemplateManager to inject thought tags for supported models
parent b3e5d314
...@@ -342,6 +342,8 @@ class ChatCompletionRequest(BaseModel): ...@@ -342,6 +342,8 @@ class ChatCompletionRequest(BaseModel):
top_logprobs: Optional[int] = None top_logprobs: Optional[int] = None
response_format: Optional[Dict] = None response_format: Optional[Dict] = None
user: Optional[str] = None user: Optional[str] = None
# Enable thinking/reasoning mode for supported models
enable_thinking: Optional[bool] = False
model_config = ConfigDict(extra="allow") # Allow extra fields to prevent 422 errors model_config = ConfigDict(extra="allow") # Allow extra fields to prevent 422 errors
class CompletionRequest(BaseModel): class CompletionRequest(BaseModel):
...@@ -5416,6 +5418,31 @@ async def chat_completions(request: ChatCompletionRequest, http_request: Request ...@@ -5416,6 +5418,31 @@ async def chat_completions(request: ChatCompletionRequest, http_request: Request
# Insert system message at the beginning # Insert system message at the beginning
messages = [ChatMessage(role="system", content=system_text)] + list(messages) messages = [ChatMessage(role="system", content=system_text)] + list(messages)
# Enable thinking/reasoning mode if requested
if getattr(request, 'enable_thinking', False):
from codai.models.templates import AgenticTemplateManager
template_manager = AgenticTemplateManager(request.model)
# Get the current system prompt if exists
system_content = None
for msg in messages:
if msg.role == "system":
system_content = msg.content
break
if system_content:
# Inject agentic instructions
system_content = template_manager.get_agent_system_prompt(system_content)
else:
system_content = template_manager.get_agent_system_prompt("You are a helpful assistant.")
# Update or add system message
system_found = False
for i, msg in enumerate(messages):
if msg.role == "system":
messages[i] = ChatMessage(role="system", content=system_content)
system_found = True
break
if not system_found:
messages = [ChatMessage(role="system", content=system_content)] + list(messages)
# Format messages with tools if provided # Format messages with tools if provided
if request.tools: if request.tools:
messages = format_tools_for_prompt(request.tools, messages) messages = format_tools_for_prompt(request.tools, messages)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment