Skip to content

Team-A-I/otoo_python_llm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“– ๊ฐˆ๋“ฑ ํŒ๊ฒฐ ์„œ๋น„์Šค '๋ช‡๋Œ€๋ช‡' (FastAPI)

์ด ํ”„๋กœ์ ํŠธ๋Š” FastAPI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๋ชจ๋ธ์„ ๊ตฌํ˜„ํ•œ ํ”„๋กœ์ ํŠธ ์ž…๋‹ˆ๋‹ค.
์ฃผ์š” ๊ธฐ๋Šฅ์œผ๋กœ๋Š” ๊ฐ์ • ๋ถ„์„, Q&A ์ƒ์„ฑ, ์ฑ„ํŒ… ๋ด‡, OCR ์ฒ˜๋ฆฌ ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์„ค์น˜ ๋ฐ ์‹คํ–‰

์˜์กด์„ฑ ์„ค์น˜

pip install --no-cache-dir -r requirements.txt

ํ•„์š”ํ•œ ํŒŒ์ผ

#.env
OPENAI_API_KEY=
DB_HOST=
DB_PORT=
DB_NAME=
DB_USER=
DB_PASSWORD=

์‹คํ–‰

uvicorn main:app --reload --port 8001

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

C:.
โ”œโ”€โ”€โ”€.github
โ”‚ โ”œโ”€โ”€โ”€ISSUE_TEMPLATE
โ”‚ โ””โ”€โ”€โ”€workflows
โ”œโ”€โ”€โ”€.idea
โ”œโ”€โ”€โ”€app
โ”‚ โ”œโ”€โ”€โ”€api
โ”‚ โ”œโ”€โ”€โ”€db
โ”‚ โ”œโ”€โ”€โ”€models
โ”‚ โ”œโ”€โ”€โ”€modules
โ”‚ โ”œโ”€โ”€โ”€prompts

์ฃผ์š”๊ธฐ๋Šฅ ๋ฐ ์˜ˆ์ œ

  1. EmotionReportModel: ๋‹ค์–‘ํ•œ ๊ฐ์ • ์ƒํƒœ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๋ณด๊ณ ์„œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  2. QnaModel: ์‚ฌ์šฉ์ž ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„ ์ œ๊ณตํ•˜๊ณ  MongoDB์—์„œ ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
  3. QnAEditorModel: Q&A ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  FAISS ์ธ๋ฑ์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
  4. ChatbotModel: ์ฃผ์–ด์ง„ ๋Œ€ํ™” ๋ชจ๋“œ์— ๋”ฐ๋ผ ์ฑ„ํŒ… ๋ด‡ ์‘๋‹ต์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  5. AnalysisModel: ๋Œ€ํ™” ๋‚ด์šฉ์„ ๋ถ„์„ํ•˜์—ฌ ๊ฐˆ๋“ฑ, ์‚ฌ๋ž‘, ์šฐ์ • ๋“ฑ์˜ ์ƒํ™ฉ์„ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค.
  6. OcrModel: ์ด๋ฏธ์ง€์—์„œ ํ…์ŠคํŠธ๋ฅผ ์ถ”์ถœํ•˜๊ณ  ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.
  7. STTModel: ์Œ์„ฑ ํ…์ŠคํŠธ ๋ณ€ํ™˜(STT) ๊ฒฐ๊ณผ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๋Œ€ํ™” ์ƒํ™ฉ์„ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  8. ImageProcessor: ์ด๋ฏธ์ง€์˜ ํ…์ŠคํŠธ ์˜์—ญ์„ ์ถ”์ถœํ•˜๊ณ  OCR์„ ํ†ตํ•ด ํ…์ŠคํŠธ๋ฅผ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค.

EmotionReportModel

์„ค๋ช…

EmotionReportModel์€ ์‚ฌ์šฉ์ž์˜ ๊ฐ์ • ์ƒํƒœ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๋ณด๊ณ ์„œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
์ด ๋ชจ๋ธ์€ OpenAI์˜ GPT-4 ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ฐ์ • ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ์ฝ”๋“œ
emotion_report_model = EmotionReportModel(api_key=api_key)

messages_request = {
    "messages": [
        {"role": "user", "content": "I am feeling very stressed and anxious."}
    ]
}

response = await emotion_report_model.generate_messages_response(messages_request)
print(response)

QnaModel

์„ค๋ช…

QnaModel์€ MongoDB์—์„œ ์งˆ๋ฌธ๊ณผ ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ , GPT-4 ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ต๋ณ€์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
์ด ๋ชจ๋ธ์€ MongoDB์™€ FAISS ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ์ฝ”๋“œ
qna_model = QnaModel(api_key=api_key)

messages_request = {
    "messages": [
        {"role": "user", "content": "What is the capital of France?"}
    ]
}

response = await qna_model.generate_qna_response(messages_request)
print(response)

QnAEditorModel

์„ค๋ช…

QnAEditorModel์€ Q&A ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  MongoDB์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
์ด ๋ชจ๋ธ์€ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• ํ•˜๊ณ  ์ž„๋ฒ ๋”ฉ์„ ์ƒ์„ฑํ•˜์—ฌ FAISS ์ธ๋ฑ์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ์ฝ”๋“œ
qna_editor_model = QnAEditorModel(api_key=api_key)

messages_request = "New Q&A data to be indexed in the database."

response = await qna_editor_model.generate_qna_edit_response(messages_request)
print(response)

ChatbotModel

์„ค๋ช…

ChatbotModel์€ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ๋Œ€ํ™” ๋ชจ๋“œ์— ๋”ฐ๋ผ ์ฑ„ํŒ… ๋ด‡ ์‘๋‹ต์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ๋ณธ ๋ชจ๋“œ์™€ ๋ชจ๋“œ 2๊ฐ€ ์žˆ์œผ๋ฉฐ, ๊ฐ ๋ชจ๋“œ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‘๋‹ต์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ์ฝ”๋“œ
chatbot_model = ChatbotModel(api_key=api_key)

mode_request = {"mode": "2"}
recent_messages_request = {
    "RecentMessages": [
        "user : Hello, how are you?",
        "assistant : I am fine, thank you! How can I assist you today?"
    ]
}

response = await chatbot_model.generate_chat_response(mode_request, recent_messages_request)
print(response)

AnalysisModel

์„ค๋ช…

AnalysisModel์€ ๋Œ€ํ™” ๋‚ด์šฉ์„ ๋ถ„์„ํ•˜์—ฌ ๊ฐˆ๋“ฑ, ์‚ฌ๋ž‘, ์šฐ์ • ๋“ฑ์˜ ์ƒํ™ฉ์„ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค.
ํ…์ŠคํŠธ๋ฅผ ์ „์ฒ˜๋ฆฌํ•˜๊ณ  ์ง€์ •๋œ ๋ถ„์„ ์œ ํ˜•์— ๋”ฐ๋ผ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ์ฝ”๋“œ
analysis_model = AnalysisModel(api_key=api_key)

text = "I feel like there is a lot of tension between us lately."
analysis_type = "conflict"

response = await analysis_model.analyze(text, analysis_type)
print(response)

OcrModel

์„ค๋ช…

OcrModel์€ ์ด๋ฏธ์ง€์—์„œ ํ…์ŠคํŠธ๋ฅผ ์ถ”์ถœํ•˜๊ณ  ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.
์ด ๋ชจ๋ธ์€ OpenAI์˜ GPT-4 ๋ชจ๋ธ๊ณผ PaddleOCR์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€ ๋‚ด ํ…์ŠคํŠธ๋ฅผ ์ธ์‹ํ•˜๊ณ ,
๋ถ„์„ ์œ ํ˜•์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ์ฝ”๋“œ
ocr_model = OcrModel(api_key=api_key)

files = [open('path/to/image1.png', 'rb'), open('path/to/image2.png', 'rb')]
analysis_type = "love"

response = await ocr_model.process_uploaded_files(files, analysis_type)
print(response)

STTModel

์„ค๋ช…

STTModel์€ ์Œ์„ฑ ํ…์ŠคํŠธ ๋ณ€ํ™˜(STT) ๊ฒฐ๊ณผ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๋Œ€ํ™” ์ƒํ™ฉ์„ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
๋‹จ์ผ ํ™”์ž์™€ ๋‹ค์ค‘ ํ™”์ž์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ์ฝ”๋“œ
stt_model = STTModel(api_key=api_key)

stt_response = STTResponse(
    id="12345",
    status="completed",
    results=STTResults(
        utterances=[
            Utterance(start_at=0, duration=5, spk=0, spk_type="user", msg="Hello, how can I help you?"),
            Utterance(start_at=6, duration=4, spk=1, spk_type="assistant", msg="I need some assistance with my account.")
        ],
        verified=[True, True]
    )
)

response = await stt_model.analyze_stt(stt_response)
print(response)

ImageProcessor

์„ค๋ช…

ImageProcessor๋Š” ์ด๋ฏธ์ง€์˜ ํ…์ŠคํŠธ ์˜์—ญ์„ ์ถ”์ถœํ•˜๊ณ  OCR์„ ํ†ตํ•ด ํ…์ŠคํŠธ๋ฅผ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค.
๋Œ€๋น„๋ฅผ ์กฐ์ •ํ•˜๊ณ  ์ปจํˆฌ์–ด๋ฅผ ์ฐพ์•„ ํ…์ŠคํŠธ ์˜์—ญ์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ์ฝ”๋“œ
image_processor = ImageProcessor()

image_files = [open('path/to/image1.png', 'rb'), open('path/to/image2.png', 'rb')]

all_left_text, all_right_text = await image_processor.process_images(image_files)
print("Left Text:", all_left_text)
print("Right Text:", all_right_text)

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •