pip-library-etl: 코드 문서화 및 SQL 쿼리 생성을 도와주는 1.3B 규모의 작은 언어 모델

:pytorch:PyTorchKR:kr:

  • Hugging Face에 등록된 PipableAI/pip-library-etl-1.3b은 코드 문서화 및 SQL 쿼리 생성에 특화된 모델입니다. 이 모델은 기존의 GPT-3.5와 비슷하거나 다소 나은 성능을 보여주며, 특히 코드베이스를 LLM 및 RAG 파이프라인에서 활용할 수 있는 기능적 파스 트리로 전환하는 능력이 탁월합니다. 이 라이브러리와 모델은 개발자들이 자신의 코드베이스를 더 효율적으로 관리하고 활용할 수 있게 해주는 도구입니다. 여러분의 코드를 문서화하고, SQL 쿼리를 생성하는 데 있어 이 모델이 어떻게 도움을 줄 수 있는지 함께 알아보겠습니다.


소개

PipableAI/pip-library-etl-1.3b는 코드 문서화와 SQL 쿼리 생성을 위한 1.3억 개의 파라미터를 가진 모델입니다. 이는 GPT와 비교할 수 있는 성능을 제공하며, 코드 문서화 및 LLM, RAG 파이프라인 준비에 필요한 모든 기능을 포함하고 있습니다. 추가적으로, 이 모델은 SQL 쿼리 생성에서도 높은 정확도를 자랑하며, 컨텍스트로 추가 예시, 지침, 열 설명을 제공하는 기능을 가지고 있습니다.

주요 기능

  • 코드 문서화: 이 모델은 코드베이스를 분석하여 각 함수 및 모듈에 대한 문서화를 자동으로 생성할 수 있습니다. 이는 개발자가 보다 쉽게 코드를 이해하고 활용할 수 있도록 돕습니다.
  • SQL 쿼리 생성: 제공된 스키마와 질문에 기반하여 SQL 쿼리를 자동 생성합니다. 이는 데이터 관련 작업을 수행할 때 시간을 절약해 줍니다.
  • 함수 호출 생성: 문제에 대한 설명이 주어졌을 때, 이를 바탕으로 파이썬 함수 호출을 생성할 수 있습니다. 이는 예시 함수 호출을 생성하거나 코드 조각을 프로토타이핑하는 데 유용합니다.

사용 방법

설치

pip-library-etl 사용을 위해서는 Hugging Face의 transformers 설치가 필요합니다:

pip install transformers

모델 사용

클라우드에서 모델을 사용하기 위해 다음과 같은 Python 코드를 사용하여 호출합니다:

from pip_library_etl import PipEtl
generator = PipEtl(device="cloud")

또는, 다음과 같이 API Endpoint로 POST 요청을 보내서 실행할 수도 있습니다:

curl -X 'POST' \
  'https://playground.pipable.ai/infer' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'model_name=PipableAI%2Fpip-library-etl-1.3b&prompt="YOUR PROMPT"&max_new_tokens=400'

코드 문서화 기능 예제

아래의 Python 코드는 간단한 함수의 문서화를 생성하는 방법을 보여줍니다:

from transformers import AutoModelForCausalLM, AutoTokenizer

# 모델 및 토크나이저 초기화
model = AutoModelForCausalLM.from_pretrained("PipableAI/pip-library-etl-1.3b").to("cuda")
tokenizer = AutoTokenizer.from_pretrained("PipableAI/pip-library-etl-1.3b")

# 문서화를 생성할 코드 예시
prompt = """
<example_response>
 --code:def divide_by_two(x: float) -> float: return x / 2
 --question:Document the python code above giving function description, parameters and return type and example on how to call the function
 --doc:
</example_response>
<function_code> def download_file(shared_url, destination): try: if not shared_url.startswith("https://drive.google.com"): raise ValueError("Please provide a valid google drive link.") </function_code>
<instructions>
 1. In the examples while calling function use the name mentioned after `def ` in the above function_code.
 2. In the generated docs use valid python type hints as per PEP 484.
</instructions>
<question>Document the python code above giving function description, parameters and return type and example how to call the function.</question>
<doc>
"""

# 토크나이저로 텍스트를 토큰화하고, 모델로부터 문서화 생성
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=450)
doc = tokenizer.decode(outputs[0], skip_special_tokens=True)

print(doc)

위 코드는 divide_by_two 함수에 대한 문서화를 생성합니다. 사용자는 자신의 코드를 prompt에 삽입하여 이와 유사한 방식으로 자동 문서화를 생성할 수 있습니다.

SQL 쿼리 생성 예제

모델은 제공된 스키마와 질문을 바탕으로 SQL 쿼리를 생성할 수도 있습니다. 예를 들어, 아래의 예시는 특정 조건을 만족하는 행의 이름을 선택하는 SQL 쿼리를 생성하는 방법을 보여줍니다.

pythonCopy code

Explain

prompt = """
Generate a simple SQL query from the schema mentioned for the following question.
<schema>
CREATE TABLE department (
 Department_ID number, -- Unique identifier for the department
 Name text, -- Name of the department
 Creation text, -- Date of creation or establishment
 Ranking number, -- Ranking of the department
 Budget_in_Billions number, -- Budget of the department in billions
 Num_Employees number -- Number of employees in the department
);
</schema>
<question>What are the names of the departments with more than 100 employees?</question>
<sql>
"""

# 토크나이저로 텍스트를 토큰화하고, 모델로부터 SQL 쿼리 생성
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=400)
sql_query = tokenizer.decode(outputs[0], skip_special_tokens=True)

print(sql_query)

위 예시 코드는 department 테이블에서 직원 수가 100명 이상인 부서의 이름을 선택하는 SQL 쿼리를 생성합니다. 사용자는 자신의 스키마와 질문을 prompt에 삽입하여 필요한 SQL 쿼리를 얻을 수 있습니다.

더 읽어보기

:github: 모델 코드

:hugs: 모델 가중치

예제 노트북




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:heart:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: