add kia ai chat tools
CI/CD Pipeline / build-and-deploy (push) Successful in 19s
Details
CI/CD Pipeline / build-and-deploy (push) Successful in 19s
Details
This commit is contained in:
parent
9df1feb67d
commit
1fbd29c1b0
1
.api.env
1
.api.env
|
|
@ -27,3 +27,4 @@ PIXVERSE_API_KEY=sk-2c785f1f77ace5b4f39cb3d4dc5ef554
|
|||
INTERNAL_TELEGRAM_SECRET=do8asyd0h21uodh2od2hkdmbzxc2349ASAX80scasokcu23ked2zxc
|
||||
LIARA_API_URL =https://ai.liara.ir/api/68eb653bb55873971e0d46d6/v1
|
||||
LIARA_API_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiI2OThhZGIxMWQzODZhNWVmODNlMTg2YzAiLCJ0eXBlIjoiYWlfa2V5IiwiaWF0IjoxNzcwNzA3NzMwfQ.ckoR00Uxt8W4DmLCGW24P46Zq-et0Yhtu2xej5P0ClQ
|
||||
KIA_API_KEY =7ed05fadbea55c56b43c69c2061472ac
|
||||
|
|
@ -33,6 +33,7 @@ class Settings(BaseSettings):
|
|||
internal_telegram_secret: str = getenv("INTERNAL_TELEGRAM_SECRET", "")
|
||||
liara_api_url: str = getenv("LIARA_API_URL", "")
|
||||
liara_api_key: str = getenv("LIARA_API_KEY", "")
|
||||
kia_api_key: str = getenv("KIA_API_KEY", "")
|
||||
|
||||
|
||||
settings = Settings()
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ from langchain_core.messages import (
|
|||
)
|
||||
|
||||
from .database.service import DatabaseService
|
||||
from .kiaai import get_kia_model
|
||||
from ..config import settings
|
||||
from ..models import Chatbot, Message, BotStatus, BotType
|
||||
from ..messages import MESSAGES
|
||||
|
|
@ -53,6 +54,9 @@ async def web_search_tool(query: str) -> str:
|
|||
|
||||
|
||||
def get_model(model: str):
|
||||
if model.startswith("kia/"):
|
||||
return get_kia_model(model)
|
||||
|
||||
if "claude" in model:
|
||||
# return ChatAnthropic(model=model, api_key=settings.anthropic_api_key)
|
||||
return ChatOpenAI(
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
from .chat import KiaAIService, get_kia_model
|
||||
|
||||
__all__ = ["KiaAIService", "get_kia_model"]
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
from langchain_openai import ChatOpenAI
|
||||
|
||||
from ...config import settings
|
||||
|
||||
KIA_BASE_URL = "https://api.kie.ai"
|
||||
|
||||
# Models that support reasoning_effort parameter
|
||||
REASONING_MODELS = {"gpt-5-2", "claude-sonnet-4-5", "claude-opus-4-5", "gemini-3-pro", "gemini-2.5-flash","gemini-2.5-pro"}
|
||||
|
||||
|
||||
class KiaAIService:
|
||||
"""
|
||||
Service for interacting with KIA AI models via OpenAI-compatible API.
|
||||
|
||||
KIA AI endpoint pattern:
|
||||
https://api.kie.ai/{modelName}/v1/chat/completions
|
||||
|
||||
Usage:
|
||||
service = KiaAIService()
|
||||
model = service.get_model("kia/gpt-4o")
|
||||
model = service.get_model("kia/o3", reasoning_effort="high")
|
||||
"""
|
||||
|
||||
def get_model(
|
||||
self,
|
||||
model: str,
|
||||
reasoning_effort: str | None = None,
|
||||
) -> ChatOpenAI:
|
||||
"""
|
||||
Returns a LangChain-compatible ChatOpenAI model configured for KIA AI API.
|
||||
|
||||
Args:
|
||||
model: Model identifier with optional 'kia/' prefix
|
||||
(e.g. 'kia/gpt-4o', 'kia/claude-3-5-sonnet', 'kia/o3')
|
||||
reasoning_effort: Reasoning effort level for supported models.
|
||||
One of: 'low', 'medium', 'high'
|
||||
|
||||
Returns:
|
||||
ChatOpenAI instance pointing to https://api.kie.ai/{modelName}/v1
|
||||
"""
|
||||
model_name = model.removeprefix("kia/")
|
||||
base_url = f"{KIA_BASE_URL}/{model_name}/v1"
|
||||
|
||||
model_kwargs: dict = {}
|
||||
|
||||
# Add reasoning_effort for models that support it
|
||||
if reasoning_effort and model_name in REASONING_MODELS:
|
||||
model_kwargs["reasoning_effort"] = reasoning_effort
|
||||
|
||||
return ChatOpenAI(
|
||||
model=model_name,
|
||||
api_key=settings.kia_api_key,
|
||||
base_url=base_url,
|
||||
model_kwargs=model_kwargs,
|
||||
)
|
||||
|
||||
|
||||
def get_kia_model(
|
||||
model: str,
|
||||
reasoning_effort: str | None = None,
|
||||
) -> ChatOpenAI:
|
||||
"""
|
||||
Convenience function to get a KIA AI LangChain model instance.
|
||||
|
||||
Args:
|
||||
model: Model identifier with optional 'kia/' prefix
|
||||
(e.g. 'kia/gpt-4o', 'kia/o3')
|
||||
reasoning_effort: Optional reasoning effort ('low', 'medium', 'high')
|
||||
|
||||
Returns:
|
||||
ChatOpenAI configured for KIA AI API
|
||||
"""
|
||||
service = KiaAIService()
|
||||
return service.get_model(model=model, reasoning_effort=reasoning_effort)
|
||||
Loading…
Reference in New Issue