add support for system prompts!
This commit is contained in:
16
chatmock.py
16
chatmock.py
@@ -271,6 +271,14 @@ def create_app(
|
|||||||
messages = []
|
messages = []
|
||||||
if not isinstance(messages, list):
|
if not isinstance(messages, list):
|
||||||
return jsonify({"error": {"message": "Request must include messages: []"}}), 400
|
return jsonify({"error": {"message": "Request must include messages: []"}}), 400
|
||||||
|
|
||||||
|
# Convert first system prompt into a user message by default (beta thing)
|
||||||
|
if isinstance(messages, list):
|
||||||
|
sys_idx = next((i for i, m in enumerate(messages) if isinstance(m, dict) and m.get("role") == "system"), None)
|
||||||
|
if isinstance(sys_idx, int):
|
||||||
|
sys_msg = messages.pop(sys_idx)
|
||||||
|
content = sys_msg.get("content") if isinstance(sys_msg, dict) else ""
|
||||||
|
messages.insert(0, {"role": "user", "content": content})
|
||||||
is_stream = bool(payload.get("stream"))
|
is_stream = bool(payload.get("stream"))
|
||||||
|
|
||||||
tools_responses = convert_tools_chat_to_responses(payload.get("tools"))
|
tools_responses = convert_tools_chat_to_responses(payload.get("tools"))
|
||||||
@@ -555,6 +563,13 @@ def create_app(
|
|||||||
model = payload.get("model")
|
model = payload.get("model")
|
||||||
raw_messages = payload.get("messages")
|
raw_messages = payload.get("messages")
|
||||||
messages = _convert_ollama_messages(raw_messages, payload.get("images") if isinstance(payload.get("images"), list) else None)
|
messages = _convert_ollama_messages(raw_messages, payload.get("images") if isinstance(payload.get("images"), list) else None)
|
||||||
|
# Convert first system prompt into a user message by default
|
||||||
|
if isinstance(messages, list):
|
||||||
|
sys_idx = next((i for i, m in enumerate(messages) if isinstance(m, dict) and m.get("role") == "system"), None)
|
||||||
|
if isinstance(sys_idx, int):
|
||||||
|
sys_msg = messages.pop(sys_idx)
|
||||||
|
content = sys_msg.get("content") if isinstance(sys_msg, dict) else ""
|
||||||
|
messages.insert(0, {"role": "user", "content": content})
|
||||||
stream_req = payload.get("stream")
|
stream_req = payload.get("stream")
|
||||||
if stream_req is None:
|
if stream_req is None:
|
||||||
stream_req = True
|
stream_req = True
|
||||||
@@ -1103,6 +1118,7 @@ def main() -> None:
|
|||||||
default=os.getenv("CHATGPT_LOCAL_REASONING_COMPAT", "think-tags").lower(),
|
default=os.getenv("CHATGPT_LOCAL_REASONING_COMPAT", "think-tags").lower(),
|
||||||
help="Compatibility mode for exposing reasoning to clients (legacy|o3|think-tags). 'current' is accepted as an alias for 'legacy'",
|
help="Compatibility mode for exposing reasoning to clients (legacy|o3|think-tags). 'current' is accepted as an alias for 'legacy'",
|
||||||
)
|
)
|
||||||
|
# System prompt handling is now default; no flag needed.
|
||||||
|
|
||||||
p_info = sub.add_parser("info", help="Print current stored tokens and derived account id")
|
p_info = sub.add_parser("info", help="Print current stored tokens and derived account id")
|
||||||
p_info.add_argument("--json", action="store_true", help="Output raw auth.json contents")
|
p_info.add_argument("--json", action="store_true", help="Output raw auth.json contents")
|
||||||
|
|||||||
Reference in New Issue
Block a user