콘텐츠로 이동

RAG 라마인덱스 Gradio

Gradio 설치

!pip install gradio

기본 Gradio UI

import gradio as gr

# 응답 생성 함수
def generate_response(prompt_text: str):

    return "Hello"

# Gradio Blocks 인터페이스 설정
def chatgpt_interface():
    with gr.Blocks() as demo:
        gr.Markdown("### ChatGPT")

        with gr.Row():
            with gr.Column():
                # 사용자 입력 텍스트 박스
                input_text = gr.Textbox(label="질문을 입력해 주세요:")

                # ChatGPT의 응답 출력 텍스트 박스
                output_text = gr.Textbox(label="AI 응답", interactive=False)

                # 버튼 클릭 시, ChatGPT 응답 생성
                input_text.submit(generate_response, inputs=input_text, outputs=output_text)

        demo.launch()

# ChatGPT 인터페이스 실행
chatgpt_interface()

쿼리 실행하기

import gradio as gr

# 응답 생성 함수
def generate_response(prompt_text: str):

    # 로드된 인덱스 실행
    response = query_engine.query(prompt_text)

    return response

# Gradio Blocks 인터페이스 설정
def chatgpt_interface():
    with gr.Blocks() as demo:
        gr.Markdown("### ChatGPT")

        with gr.Row():
            with gr.Column():
                # 사용자 입력 텍스트 박스
                input_text = gr.Textbox(label="질문을 입력해 주세요:")

                # ChatGPT의 응답 출력 텍스트 박스
                output_text = gr.Textbox(label="AI 응답", interactive=False)

                # 버튼 클릭 시, ChatGPT 응답 생성
                input_text.submit(generate_response, inputs=input_text, outputs=output_text)

        demo.launch()

# ChatGPT 인터페이스 실행
chatgpt_interface()

통합된 코드

!pip install llama-index
!pip install llama-index-core
!pip install llama-index-llms-openai
!pip install llama-index-llms-replicate
!pip install llama-index-embeddings-huggingface
!pip install gradio
#아래 코드를 위에서 별도로 실행해 주세요.
#import os
#os.environ["OPENAI_API_KEY"] = "새로 붙여 넣으세요."


# 저장된 인덱스 불러오기
from llama_index.core import StorageContext, load_index_from_storage

# rebuild storage context
storage_context = StorageContext.from_defaults(persist_dir="./storage")

# load index (gpt-turbo-3.5 기본 사용)
#index = load_index_from_storage(storage_context)

# 변경된 방식. llm 모델은 인덱스와는 관련이 없고 이후 query엔진에 영향을 줌.
client = OpenAI()
index = load_index_from_storage(storage_context, llm=client)

# 쿼리 엔진 생성
query_engine = index.as_query_engine()

# Gradio 실행
import gradio as gr

# 응답 생성 함수
def generate_response(prompt_text: str):

    # 로드된 인덱스 실행
    response = query_engine.query(prompt_text)

    return response

# Gradio Blocks 인터페이스 설정
def chatgpt_interface():
    with gr.Blocks() as demo:
        gr.Markdown("### ChatGPT")

        with gr.Row():
            with gr.Column():
                # 사용자 입력 텍스트 박스
                input_text = gr.Textbox(label="질문을 입력해 주세요:")

                # ChatGPT의 응답 출력 텍스트 박스
                output_text = gr.Textbox(label="AI 응답", interactive=False)

                # 버튼 클릭 시, ChatGPT 응답 생성
                input_text.submit(generate_response, inputs=input_text, outputs=output_text)

        demo.launch()

# ChatGPT 인터페이스 실행
chatgpt_interface()

한글 답변을 위한 보완

#import os
#os.environ["OPENAI_API_KEY"] = "새로 붙여 넣으세요."


# 저장된 인덱스 불러오기
from llama_index.core import StorageContext, load_index_from_storage

# rebuild storage context
storage_context = StorageContext.from_defaults(persist_dir="./storage")

# load index (gpt-turbo-3.5 기본 사용)
#index = load_index_from_storage(storage_context)

# 변경된 방식. llm 모델은 인덱스와는 관련이 없고 이후 query엔진에 영향을 줌.
client = OpenAI()
index = load_index_from_storage(storage_context, llm=client)



# 쿼리 엔진 생성
query_engine = index.as_query_engine()

# Gradio 실행
import gradio as gr

# 응답 생성 함수
def generate_response(prompt_text: str):

    # 한글 답변 추가
    new_prompt = prompt_text + ". 질문에 대한 답변은 한글로 답변해줘."
    # 로드된 인덱스 실행
    response = query_engine.query(new_prompt)

    return response

# Gradio Blocks 인터페이스 설정
def chatgpt_interface():
    with gr.Blocks() as demo:
        gr.Markdown("### ChatGPT")

        with gr.Row():
            with gr.Column():
                # 사용자 입력 텍스트 박스
                input_text = gr.Textbox(label="질문을 입력해 주세요:")

                # ChatGPT의 응답 출력 텍스트 박스
                output_text = gr.Textbox(label="AI 응답", interactive=False)

                # 버튼 클릭 시, ChatGPT 응답 생성
                input_text.submit(generate_response, inputs=input_text, outputs=output_text)

        demo.launch()

# ChatGPT 인터페이스 실행
chatgpt_interface()