add posibility to choose model
This commit is contained in:
parent
d5a32a534f
commit
b59c53ad07
|
|
@ -7,6 +7,7 @@
|
|||
from flask import Flask, request, jsonify
|
||||
from flask_cors import CORS
|
||||
from workflows import run_agent, graph_history_manager
|
||||
from llm_client import MODELS # Добавляем импорт списка моделей
|
||||
|
||||
api = Flask(__name__)
|
||||
CORS(
|
||||
|
|
@ -23,12 +24,13 @@ def chat():
|
|||
parent_node_id = data.get(
|
||||
"parent_node_id") # Получаем parent_node_id из запроса
|
||||
system_prompt = data.get("system_prompt")
|
||||
model = data.get("model")
|
||||
|
||||
if not message:
|
||||
return jsonify({"error": "Сообщение не может быть пустым."}, 400)
|
||||
|
||||
result = run_agent(message, graph_id,
|
||||
parent_node_id, system_prompt) # Передаем parent_node_id в run_agent
|
||||
parent_node_id, system_prompt, model) # Передаем parent_node_id в run_agent
|
||||
return jsonify(result)
|
||||
|
||||
|
||||
|
|
@ -79,3 +81,7 @@ def get_messages_from_root_to_node(graph_id, node_id):
|
|||
graph_data, target_node_id)
|
||||
return jsonify(messages)
|
||||
|
||||
@api.route('/api/models', methods=['GET'])
|
||||
def get_available_models():
|
||||
"""API endpoint для получения списка доступных моделей."""
|
||||
return jsonify(list(MODELS.keys()))
|
||||
|
|
@ -31,13 +31,12 @@ MODELS: Dict[str, Dict[str, Any]] = {
|
|||
"stream": True,
|
||||
"capabilities": ["vision"],
|
||||
},
|
||||
"gemini-2.5-flash-preview-05-20": {
|
||||
"name": "gemini-2.5-flash-preview-05-20",
|
||||
"gemini-2.5-flash-bh": {
|
||||
"name": "gemini-2.5-flash",
|
||||
"provider": "openai", # Изменено на "openai"
|
||||
"model_name":
|
||||
"gemini-2.5-flash-preview-05-20", # Добавлено имя модели для LangChain
|
||||
"apiBase": "https://render-service-gsu7.onrender.com/g/v1beta",
|
||||
"apiKey": "AIzaSyDpueKFWVqknVKlQn6TdasLmJ2lvAUiBik",
|
||||
"model_name": "gemini-2.5-flash", # Добавлено имя модели для LangChain
|
||||
"apiBase": "https://bothub.chat/api/v2/openai/v1",
|
||||
"apiKey": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImQ3MTMwYTk0LTJiNmMtNDgzZi04Y2NiLWM5MjgwNzlmNDFlZSIsImlzRGV2ZWxvcGVyIjp0cnVlLCJpYXQiOjE3NTQ0NzYwMDcsImV4cCI6MjA3MDA1MjAwN30._64_DXNZatdd4-4VbXp8dOXdDhIlNWMQt9A_Nn6mu3g",
|
||||
"stream": True,
|
||||
"capabilities": ["vision"],
|
||||
},
|
||||
|
|
@ -204,3 +203,7 @@ def get_llm(name: str) -> CustomLLM:
|
|||
if not config:
|
||||
raise ValueError(f"Модель '{name}' не сконфигурирована.")
|
||||
return CustomLLM(config)
|
||||
|
||||
def get_available_models():
|
||||
"""Возвращает список доступных моделей."""
|
||||
return list(MODELS.keys())
|
||||
|
|
@ -38,3 +38,4 @@ class AgentState(BaseModel):
|
|||
[], description="Временная история чата, не сохраняемая в БД.")
|
||||
system_prompt: Optional[str] = Field(None,
|
||||
description="Системный промпт.")
|
||||
selected_model: str = Field(None, description="Модель llm.")
|
||||
|
|
@ -163,7 +163,9 @@ def call_llm_node(state: AgentState) -> AgentState:
|
|||
elif msg["role"] == "assistant":
|
||||
messages_for_llm.append(AIMessage(content=msg["content"]))
|
||||
|
||||
response = main_llm.invoke(messages_for_llm)
|
||||
model_name = state.selected_model
|
||||
llm = get_llm(model_name)
|
||||
response = llm.invoke(messages_for_llm)
|
||||
|
||||
llm_node_id = str(uuid.uuid4())
|
||||
|
||||
|
|
|
|||
|
|
@ -93,7 +93,8 @@ app = workflow.compile()
|
|||
def run_agent(user_input: str,
|
||||
existing_graph_id: Optional[str] = None,
|
||||
parent_node_id: Optional[str] = None,
|
||||
system_prompt: Optional[str] = None) -> Dict[str, Any]:
|
||||
system_prompt: Optional[str] = None,
|
||||
model: Optional[str] = None) -> Dict[str, Any]:
|
||||
"""
|
||||
Запускает агента с заданным пользовательским вводом.
|
||||
Может продолжить существующий граф по graph_id.
|
||||
|
|
@ -101,7 +102,12 @@ def run_agent(user_input: str,
|
|||
"""
|
||||
|
||||
# ---------------------------------------------------- Initial State Setup ----------------------------------------------------------------
|
||||
initial_state = AgentState(input=user_input, parent_node_id=parent_node_id, system_prompt=system_prompt)
|
||||
initial_state = AgentState(
|
||||
input=user_input,
|
||||
parent_node_id=parent_node_id,
|
||||
system_prompt=system_prompt,
|
||||
selected_model=model or "gemini-2.5-flash"
|
||||
)
|
||||
|
||||
# Сохраняем исходные ID узлов и ребер для определения новых после выполнения графа
|
||||
original_node_ids: Set[str] = set()
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user