Merge branch 'main' into tools_pre-install

This commit is contained in:
Wendong-Fan 2025-09-29 01:54:00 +08:00 committed by GitHub
commit 3a9fbc2b11
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
27 changed files with 1104 additions and 609 deletions

View file

@ -1,6 +1,8 @@
from fastapi import APIRouter
from pydantic import BaseModel, Field
from app.component.model_validation import create_agent
from camel.types import ModelType
from app.component.error_format import normalize_error_to_openai_format
router = APIRouter(tags=["model"])
@ -18,12 +20,29 @@ class ValidateModelRequest(BaseModel):
class ValidateModelResponse(BaseModel):
is_valid: bool = Field(..., description="Is valid")
is_tool_calls: bool = Field(..., description="Is tool call used")
error_code: str | None = Field(None, description="Error code")
error: dict | None = Field(None, description="OpenAI-style error object")
message: str = Field(..., description="Message")
@router.post("/model/validate")
async def validate_model(request: ValidateModelRequest):
try:
# API key validation
if request.api_key is not None and str(request.api_key).strip() == "":
return ValidateModelResponse(
is_valid=False,
is_tool_calls=False,
message="Invalid key. Validation failed.",
error_code="invalid_api_key",
error={
"message": "Invalid key. Validation failed.",
"type": "invalid_request_error",
"param": None,
"code": "invalid_api_key",
},
)
extra = request.extra_params or {}
agent = create_agent(
@ -43,17 +62,33 @@ async def validate_model(request: ValidateModelRequest):
"""
)
except Exception as e:
return ValidateModelResponse(is_valid=False, is_tool_calls=False, message=str(e))
# Normalize error to OpenAI-style error structure
message, error_code, error_obj = normalize_error_to_openai_format(e)
return ValidateModelResponse(
is_valid=False,
is_tool_calls=False,
message=message,
error_code=error_code,
error=error_obj,
)
is_valid = bool(response)
is_tool_calls = False
if response and hasattr(response, 'info') and response.info:
if response and hasattr(response, "info") and response.info:
tool_calls = response.info.get("tool_calls", [])
if tool_calls and len(tool_calls) > 0:
is_tool_calls = tool_calls[0].result == "Tool execution completed successfully for https://www.camel-ai.org, Website Content: Welcome to CAMEL AI!"
is_tool_calls = (
tool_calls[0].result
== "Tool execution completed successfully for https://www.camel-ai.org, Website Content: Welcome to CAMEL AI!"
)
return ValidateModelResponse(
is_valid=is_valid,
is_tool_calls=is_tool_calls,
message="",
message="Validation Success"
if is_tool_calls
else "This model doesn't support tool calls. please try with another model.",
error_code=None,
error=None,
)