Skip to content

Commit 8b67d70

Browse files
authored
feat: remove openai api (#1427)
1 parent f8aef0e commit 8b67d70

File tree

2 files changed

+8
-79
lines changed

2 files changed

+8
-79
lines changed

aperag/service/chat_completion_service.py

Lines changed: 3 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,12 @@
1616
import json
1717
import logging
1818
import time
19-
import uuid
2019
from dataclasses import dataclass
2120
from typing import Any, AsyncGenerator, Dict, List
2221

2322
from sqlalchemy.ext.asyncio import AsyncSession
2423

2524
from aperag.db.ops import AsyncDatabaseOps, async_db_ops
26-
from aperag.flow.engine import FlowEngine
27-
from aperag.flow.parser import FlowParser
2825

2926
logger = logging.getLogger(__name__)
3027

@@ -117,58 +114,11 @@ async def stream_openai_sse_response(self, generator: AsyncGenerator[str, None],
117114
yield f"data: {json.dumps(formatter.format_stream_end(msg_id))}\n\n"
118115

119116
async def openai_chat_completions(self, user, body_data, query_params):
120-
"""Handle OpenAI-compatible chat completions"""
121-
bot_id = query_params.get("bot_id") or query_params.get("app_id")
122-
if not bot_id:
123-
return None, OpenAIFormatter.format_error("bot_id is required")
124-
125-
api_request = APIRequest(
126-
user=user,
127-
bot_id=bot_id,
128-
msg_id=str(uuid.uuid4()),
129-
stream=body_data.get("stream", False),
130-
messages=body_data.get("messages", []),
117+
"""Handle OpenAI-compatible chat completions - Not implemented"""
118+
return None, OpenAIFormatter.format_error(
119+
"The /v1/chat/completions endpoint is not implemented. Please use WebSocket API for agent-type bots."
131120
)
132121

133-
bot = await self.db_ops.query_bot(api_request.user, api_request.bot_id)
134-
if not bot:
135-
return None, OpenAIFormatter.format_error("Bot not found")
136-
137-
formatter = OpenAIFormatter()
138-
139-
# Get bot's flow configuration
140-
bot_config = json.loads(bot.config or "{}")
141-
flow_config = bot_config.get("flow")
142-
if not flow_config:
143-
return None, OpenAIFormatter.format_error("Bot flow config not found")
144-
145-
flow = FlowParser.parse(flow_config)
146-
engine = FlowEngine()
147-
initial_data = {
148-
"query": api_request.messages[-1]["content"],
149-
"user": api_request.user,
150-
"message_id": api_request.msg_id,
151-
}
152-
153-
try:
154-
_, system_outputs = await engine.execute_flow(flow, initial_data)
155-
logger.info("Flow executed successfully!")
156-
except Exception as e:
157-
logger.exception(e)
158-
return None, OpenAIFormatter.format_error(str(e))
159-
160-
async_generator = None
161-
nodes = engine.find_end_nodes(flow)
162-
for node in nodes:
163-
async_generator = system_outputs[node].get("async_generator")
164-
if async_generator:
165-
break
166-
167-
if not async_generator:
168-
return None, OpenAIFormatter.format_error("No output node found")
169-
170-
return (api_request, formatter, async_generator), None
171-
172122

173123
# Create a global service instance for easy access
174124
# This uses the global db_ops instance and doesn't require session management in views

aperag/views/openai.py

Lines changed: 5 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -12,39 +12,18 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
import logging
16-
1715
from fastapi import APIRouter, Depends, Request
18-
from fastapi.responses import StreamingResponse
1916

2017
from aperag.db.models import User
21-
from aperag.service.chat_completion_service import OpenAIFormatter, chat_completion_service
18+
from aperag.service.chat_completion_service import OpenAIFormatter
2219
from aperag.views.auth import required_user
2320

24-
logger = logging.getLogger(__name__)
25-
2621
router = APIRouter(tags=["openai"])
2722

2823

2924
@router.post("/chat/completions")
3025
async def openai_chat_completions_view(request: Request, user: User = Depends(required_user)):
31-
try:
32-
body_data = await request.json()
33-
query_params = dict(request.query_params)
34-
result, error = await chat_completion_service.openai_chat_completions(str(user.id), body_data, query_params)
35-
if error:
36-
return error
37-
api_request, formatter, async_generator = result
38-
if api_request.stream:
39-
return StreamingResponse(
40-
chat_completion_service.stream_openai_sse_response(async_generator(), formatter, api_request.msg_id),
41-
media_type="text/event-stream",
42-
)
43-
else:
44-
full_content = ""
45-
async for chunk in async_generator():
46-
full_content += chunk
47-
return formatter.format_complete_response(api_request.msg_id, full_content)
48-
except Exception as e:
49-
logger.exception(e)
50-
return OpenAIFormatter.format_error(str(e))
26+
"""OpenAI-compatible chat completions endpoint - Not implemented for agent-type bots"""
27+
return OpenAIFormatter.format_error(
28+
"The /v1/chat/completions endpoint is not implemented. Please use WebSocket API for agent-type bots."
29+
)

0 commit comments

Comments
 (0)