remove examples gateway. (#1243)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
@@ -5,8 +5,8 @@ import asyncio
|
||||
import os
|
||||
from typing import List
|
||||
|
||||
from comps import Gateway, MegaServiceEndpoint, MicroService, ServiceOrchestrator, ServiceType
|
||||
from comps.cores.mega.gateway import read_text_from_file
|
||||
from comps import MegaServiceEndpoint, MicroService, ServiceOrchestrator, ServiceRoleType, ServiceType
|
||||
from comps.cores.mega.utils import handle_message
|
||||
from comps.cores.proto.api_protocol import (
|
||||
ChatCompletionRequest,
|
||||
ChatCompletionResponse,
|
||||
@@ -27,11 +27,47 @@ LLM_SERVICE_HOST_IP = os.getenv("LLM_SERVICE_HOST_IP", "0.0.0.0")
|
||||
LLM_SERVICE_PORT = int(os.getenv("LLM_SERVICE_PORT", 9000))
|
||||
|
||||
|
||||
class DocSumService(Gateway):
|
||||
def read_pdf(file):
|
||||
from langchain.document_loaders import PyPDFLoader
|
||||
|
||||
loader = PyPDFLoader(file)
|
||||
docs = loader.load_and_split()
|
||||
return docs
|
||||
|
||||
|
||||
def read_text_from_file(file, save_file_name):
|
||||
import docx2txt
|
||||
from langchain.text_splitter import CharacterTextSplitter
|
||||
|
||||
# read text file
|
||||
if file.headers["content-type"] == "text/plain":
|
||||
file.file.seek(0)
|
||||
content = file.file.read().decode("utf-8")
|
||||
# Split text
|
||||
text_splitter = CharacterTextSplitter()
|
||||
texts = text_splitter.split_text(content)
|
||||
# Create multiple documents
|
||||
file_content = texts
|
||||
# read pdf file
|
||||
elif file.headers["content-type"] == "application/pdf":
|
||||
documents = read_pdf(save_file_name)
|
||||
file_content = [doc.page_content for doc in documents]
|
||||
# read docx file
|
||||
elif (
|
||||
file.headers["content-type"] == "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
|
||||
or file.headers["content-type"] == "application/octet-stream"
|
||||
):
|
||||
file_content = docx2txt.process(save_file_name)
|
||||
|
||||
return file_content
|
||||
|
||||
|
||||
class DocSumService:
|
||||
def __init__(self, host="0.0.0.0", port=8000):
|
||||
self.host = host
|
||||
self.port = port
|
||||
self.megaservice = ServiceOrchestrator()
|
||||
self.endpoint = str(MegaServiceEndpoint.DOC_SUMMARY)
|
||||
|
||||
def add_remote_service(self):
|
||||
|
||||
@@ -62,7 +98,7 @@ class DocSumService(Gateway):
|
||||
data = await request.json()
|
||||
stream_opt = data.get("stream", True)
|
||||
chat_request = ChatCompletionRequest.model_validate(data)
|
||||
prompt = self._handle_message(chat_request.messages)
|
||||
prompt = handle_message(chat_request.messages)
|
||||
|
||||
initial_inputs_data = {data["type"]: prompt}
|
||||
|
||||
@@ -98,9 +134,9 @@ class DocSumService(Gateway):
|
||||
file_summaries.append(docs)
|
||||
|
||||
if file_summaries:
|
||||
prompt = self._handle_message(chat_request.messages) + "\n".join(file_summaries)
|
||||
prompt = handle_message(chat_request.messages) + "\n".join(file_summaries)
|
||||
else:
|
||||
prompt = self._handle_message(chat_request.messages)
|
||||
prompt = handle_message(chat_request.messages)
|
||||
|
||||
data_type = data.get("type")
|
||||
if data_type is not None:
|
||||
@@ -151,14 +187,18 @@ class DocSumService(Gateway):
|
||||
return ChatCompletionResponse(model="docsum", choices=choices, usage=usage)
|
||||
|
||||
def start(self):
|
||||
super().__init__(
|
||||
megaservice=self.megaservice,
|
||||
|
||||
self.service = MicroService(
|
||||
self.__class__.__name__,
|
||||
service_role=ServiceRoleType.MEGASERVICE,
|
||||
host=self.host,
|
||||
port=self.port,
|
||||
endpoint=str(MegaServiceEndpoint.DOC_SUMMARY),
|
||||
endpoint=self.endpoint,
|
||||
input_datatype=ChatCompletionRequest,
|
||||
output_datatype=ChatCompletionResponse,
|
||||
)
|
||||
self.service.add_route(self.endpoint, self.handle_request, methods=["POST"])
|
||||
self.service.start()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user