Fixing festinger API
This commit is contained in:
@@ -613,13 +613,18 @@ async def generate(request: Request) -> Response:
|
|||||||
async def anthropic_messages(request: Request) -> Response:
|
async def anthropic_messages(request: Request) -> Response:
|
||||||
cfg = request.app.state.yaml_config
|
cfg = request.app.state.yaml_config
|
||||||
pool = request.app.state.pool
|
pool = request.app.state.pool
|
||||||
body = await request.json()
|
raw_body = await request.body()
|
||||||
|
body = json.loads(raw_body)
|
||||||
# Capture streaming intent BEFORE call_anthropic forces stream=False
|
# Capture streaming intent BEFORE call_anthropic forces stream=False
|
||||||
original_stream: bool = bool(body.get("stream", False))
|
original_stream: bool = bool(body.get("stream", False))
|
||||||
model = body.get("model", "unknown")
|
model = body.get("model", "unknown")
|
||||||
upstream = cfg["upstream_anthropic"]
|
upstream = cfg["upstream_anthropic"]
|
||||||
min_len = cfg["detection"]["min_length"]
|
min_len = cfg["detection"]["min_length"]
|
||||||
log.info("chat route=/v1/messages model=%s upstream=%s stream=%s", model, upstream, original_stream)
|
log.info(
|
||||||
|
"chat route=/v1/messages model=%s upstream=%s stream=%s req_preview=%.200s",
|
||||||
|
model, upstream, original_stream,
|
||||||
|
raw_body[:200].decode(errors="replace").replace("\n", " "),
|
||||||
|
)
|
||||||
try:
|
try:
|
||||||
headers = _relay_headers(request, ANTHROPIC_RELAY_HEADERS)
|
headers = _relay_headers(request, ANTHROPIC_RELAY_HEADERS)
|
||||||
if "anthropic-version" not in {k.lower() for k in headers}:
|
if "anthropic-version" not in {k.lower() for k in headers}:
|
||||||
@@ -641,9 +646,18 @@ async def anthropic_messages(request: Request) -> Response:
|
|||||||
text, raw = await call_anthropic(body, upstream, headers)
|
text, raw = await call_anthropic(body, upstream, headers)
|
||||||
record_and_check(sess, text, min_len)
|
record_and_check(sess, text, min_len)
|
||||||
if original_stream:
|
if original_stream:
|
||||||
log.info("streaming_response provider=anthropic model=%s converting json→sse", model)
|
sse_bytes = _anthropic_to_sse(raw)
|
||||||
return Response(content=_anthropic_to_sse(raw), media_type="text/event-stream")
|
log.info(
|
||||||
return Response(content=json.dumps(raw), media_type="application/json")
|
"streaming_response provider=anthropic model=%s converting json→sse bytes=%d preview=%.300s",
|
||||||
|
model, len(sse_bytes), sse_bytes[:300].decode(errors="replace"),
|
||||||
|
)
|
||||||
|
return Response(content=sse_bytes, media_type="text/event-stream")
|
||||||
|
resp_body = json.dumps(raw)
|
||||||
|
log.info(
|
||||||
|
"json_response provider=anthropic model=%s bytes=%d preview=%.300s",
|
||||||
|
model, len(resp_body), resp_body[:300],
|
||||||
|
)
|
||||||
|
return Response(content=resp_body, media_type="application/json")
|
||||||
except UpstreamError as exc:
|
except UpstreamError as exc:
|
||||||
log.error("chat_upstream_error route=/v1/messages model=%s %s", model, exc)
|
log.error("chat_upstream_error route=/v1/messages model=%s %s", model, exc)
|
||||||
return Response(content=exc.content, status_code=exc.status_code, media_type=exc.content_type)
|
return Response(content=exc.content, status_code=exc.status_code, media_type=exc.content_type)
|
||||||
|
|||||||
Reference in New Issue
Block a user