빠르게 발전하는 소프트웨어 개발 환경에서 인공 지능, 데이터 검증 및 데이터베이스 관리의 교차점은 전례없는 가능성을 열었습니다. 이 블로그 게시물은 최신 Pydanticai 프레임 워크와 Google의 Gemini-1.5 모델을 사용하여 SQL 코드 생성 및 SQL 코드 설명에 대한 혁신적인 접근 방식을 탐색하여 최첨단 AI 기술이 데이터베이스 쿼리 개발을 간소화하고 향상시킬 수있는 방법을 보여줍니다.
개발자, 데이터 과학자 및 데이터 분석가의 경우이 탐색은 복잡한 데이터베이스 쿼리를 쉽고 정확하게 만들 수있는 자연 언어 처리에서 지능형 코드 생성의 미래를 엿볼 수 있습니다.
이 기사는 Data Science Blogathon 의 일부로 출판되었습니다 .
Pydanticai는 데이터 검증 및 유형 확인에 혁명을 일으키는 강력한 파이썬 라이브러리입니다. 데이터 모델 정의에 대한 선언적 접근 방식을 제공하여 복잡한 데이터 구조를 쉽게 만들고 검증 할 수 있습니다.
Pydantic의 중요한 기능은 다음과 같습니다.
사용자 정의
유연성
데이터 검증 엄격함을 제어 할 수 있습니다.
직렬화
성능
생태계
Pydanticai는 Python에서 데이터 검증 및 유형 검사를 단순화하여 강력한 데이터 모델을 만드는 강력한 도구입니다. 그 기능을 보여주는 몇 가지 실제 예를 살펴 보겠습니다.
Pydantic Import Basemodel에서 클래스 사용자 (Basemodel) : 이름 : str 나이 : int # 유효한 데이터 user = user (name = "alice", age = 30) 인쇄 (사용자) print ( "==========================================") # 잘못된 데이터 (나이는 문자열입니다) 노력하다: user = user (name = "alice", age = "Thirty") E로 예외를 제외하고 : 인쇄 (e)
위의 코드는 Pydantic의 Basemodel을 사용하여 사용자 모델을 정의하여 이름을 문자열로, 정수로서 나이로 시행합니다. 올바른 데이터를 유효성있게 유지하지만 잘못된 데이터 (연령에 대한 문자열)가 제공되면 유효성 검사 오류가 발생합니다.
산출:
Pydantic Import Basemodel에서 클래스 제품 (Basemodel) : 가격 : 플로트 수량 : int # 불일치 유형의 데이터 Product = Product (가격 = "19.99", 수량 = "5") 인쇄 (제품) print (type (product.price)) print (type (product.quantity))
여기서는 가격이 플로트로, 정수로서의 수량을 가진 제품 모델. Pydantic은 문자열 입력 ( "19.99"및 "5")을 올바른 유형 (float and int)으로 자동으로 강요하여 유형 변환 기능을 보여줍니다.
산출:
Pydantic Import Basemodel에서 클래스 주소 (Basemodel) : 거리 : Str 도시 : Str 클래스 사용자 (Basemodel) : 이름 : str 주소 : 주소 # 유효한 데이터 user = user (name = "bob", address = { "street": "123 Main St", "City": "Wonderland"}) 인쇄 (사용자) # 중첩 속성에 액세스합니다 print (user.address.city)
여기서는 주소 모델이 포함 된 중첩 사용자 모델을 정의합니다. Pydantic은 중첩 검증을 허용하고 사전을 모델로 자동 전달합니다. 유효한 데이터는 사용자 객체를 초기화하고 ' user.address.city' 와 같은 중첩 속성에 직접 액세스 할 수 있습니다.
산출:
Pydantic Import Basemodel, Field, Field_validator에서 클래스 사용자 (Basemodel) : 이름 : str age : int = field (..., gt = 0, description = "연령은 0보다 클 사람") @field_validator ( "이름") def name_must_be_non_empty (cls, value) : value.strip ()가 아닌 경우 : ValueError Raise ( "이름은 비어있을 수 없습니다") 반환 값 # 유효한 데이터 user = user (name = "charlie", age = 25) 인쇄 (사용자) # 잘못된 데이터 노력하다: user = user (name = "", age = -5) E로 예외를 제외하고 : 인쇄 (e)
여기서 검증 규칙이있는 사용자 모델을 정의하고 나이는 0보다 크기 때문에 이름이 비어있을 수 없습니다 ( 이름_must_be_non_empty 메소드를 통해 검증). 유효한 데이터는 사용자 인스턴스를 생성하지만 유효하지 않은 데이터 (빈 이름 또는 마이너스 연령)는 상세한 유효성 검사 오류가 발생하여 Pydantic의 유효성 검사 기능을 보여줍니다.
산출:
이것들은 Pydantic의 핵심 예 중 일부입니다. 데이터 검증의 기본 원리를 이해하는 데 도움이되기를 바랍니다.
AI 에이전트는 작업을 자율적으로 수행하고 결정을 내리고 환경과 상호 작용하여 특정 목표를 달성하도록 설계된 지능형 시스템입니다. 이 에이전트는 새로운 것이 아니라 최근의 생성 AI에서 빠른 발전이 아니며이를 에이전트와 결합하여 새로운 시대에 에이전트 소프트웨어 개발을 만듭니다. 이제 에이전트는 입력을 처리하고 동작을 실행하며 동적으로 적응할 수 있습니다. 그들의 행동은 인간과 같은 문제 해결을 모방하여 최소한의 인간 개입으로 다양한 영역에서 기능 할 수 있습니다.
에이전트 워크 플로우는 하나 또는 여러 AI 에이전트가 관리하고 실행하는 구조, 목표 중심 작업 순서를 나타냅니다. 비선형 전통적인 워크 플로우, 에이전트 워크 플로우는 적응성, 자율성 및 상황 인식을 나타냅니다. 이러한 워크 플로 내의 AI 에이전트는 독립적으로 결정을 내리고 하위 작업을 위임하고 피드백을 통해 학습하여 효율적이고 최적화 된 결과를 초래할 수 있습니다.
AI 에이전트 및 에이전트 워크 플로의 통합은 복잡한 작업을 자동화하고 의사 결정을 향상 시키며 효율성을 높여 산업에 혁명을 일으켰습니다. 이 지능형 시스템은 동적으로 적응하여 다양한 도메인에서 더 똑똑한 솔루션을 가능하게합니다.
AI 에이전트는 챗봇, 이메일 관리 및 판매 파이프 라인 최적화를 통해 고객 지원과 같은 반복적 인 작업을 자동화합니다. 그들은 고 부가가치 작업에서 인적 자원을 확보하여 생산성을 향상시킵니다.
AI 기반 에이전트는 코드를 생성, 테스트 및 디버깅하여 소프트웨어 라이프 사이클을 가속화하여 개발 시간과 인적 오류를 줄입니다.
AI 에이전트는 의료 진단, 환자 모니터링 및 치료 개인화를 지원하여 의료 전달 및 운영 효율성을 향상시킵니다.
금융 시스템의 대리인 워크 플로우 사기 탐지, 위험 평가 및 투자 분석을 자동화하여보다 빠르고 신뢰할 수있는 의사 결정을 가능하게합니다.
정보 대행사는 쇼핑 경험의 개인화를 향상시켜 제품 권장 사항 및 고객 서비스를 최적화합니다.
AI 에이전트 및 에이전트 워크 플로의 상승은 복잡한 프로세스를 관리 할 수있는 높은 자율 시스템으로의 전환을 의미합니다. 그들의 적응성과 학습 능력은 현대 산업에 필수 불가결하고 혁신, 확장 성 및 도메인의 효율성을 주도합니다. AI가 계속 발전함에 따라 AI 에이전트는 일일 워크 플로에 더 통합되어 작업 관리 및 실행 방식을 변화시킬 것입니다.
Pydanticai는 Pydantic, Fastapi의 제작자가 개발 한 Python Agent 프레임 워크로 생성 AI를 활용하여 생산 등급 응용 프로그램의 구성을 간소화하여 유형 안전, 모델 거주 설계 및 대규모 언어 모델 (LLMS)과의 원활한 통합을 강조합니다.
주요 기능 Pydanticai는 다음을 포함합니다.
Pydanticai의 최소 예는 다음과 같습니다.
OS 가져 오기 pydantic_ai 수입 에이전트에서 pydantic_ai.models.gemini import geminimodel에서 dotenv import load_dotenv에서 load_dotenv () gemini_api_key = os.getenv ( "<google_api_key>") model = geminimodel ( "Gemini-1.5-Flash", api_key = gemini_api_key, )) 에이전트 = 에이전트 ( 모델 = 모델, system_prompt = "간결하고 한 문장으로 답장하십시오.", )) result = agent.run_sync ( 'Hello World "는 어디에서 왔습니까?') print (result.data)</google_api_key>
산출:
이제 진짜 일을 할 시간입니다. Pydanticai Agent Framework를 사용하여 Postgres SQL 쿼리 생성을 구축 할 것입니다.
필수 도구와 환경을 설정하기위한 단계별 가이드와 함께 프로젝트의 기초를 마련하십시오.
우리는 프로젝트를위한 콘다 환경을 만들 것입니다.
#env를 만들어냅니다 $ conda create -name sql_gen python = 3.12 # env 활성화 $ Conda는 SQL_GEN을 활성화합니다
이제 프로젝트 폴더를 만듭니다
# 폴더를 만듭니다 $ mkdir sql_code_gen # 폴더로 변경됩니다 $ cd sql_code_gen
Postgres, PSQL-Command-Tools 및 PGADMIN-4를 설치하려면 시스템의 설치 프로그램 EDBDownload로 이동하여 모든 도구를 한 번에 설치하십시오.
이제 HEREAND에서 DVDRENAL 데이터베이스를 다운로드하여 Postgres에로드하십시오.
psql -u postgres # 암호를 요구합니다
# postgres =#에서 데이터베이스 DVDRENAL을 만듭니다.
이제 PSQL 명령을 종료 한 다음 터미널을 입력하십시오.
pg_restore -u postgres -d dvdrental d : /sampledb/postgres/dvdrental.tar
이제 PSQL에 연결하여 데이터베이스가로드되었는지 확인하십시오.
psql -u postgres # dvdrental과 연결하십시오 \ c dvdrental # 테이블을 보자 \ dt
산출:
위의 테이블이 보이면 괜찮습니다. 우리는 모두 메인 프로젝트를 시작할 예정입니다.
이제 필요한 파이썬 라이브러리를 SQL_GEN CONDA ENV에 설치하십시오.
Conda는 sql_gen을 활성화합니다 # 라이브러리를 설치하십시오 Pip Pydantic Asyncpg asyncio pydantic -ai를 설치하십시오 PIP Python-Dotenv Fastapi Google-Generativeai를 설치하십시오 PIP 설치 DevTools 주석 유형 유형 유형 확장
우리 프로젝트에는 4 개의 파일, 즉 기본, 모델, 서비스 및 스키마가 있습니다.
sql_query_gen/ | |-메인 .py |-모드 .py | -schema.py | --- 서비스 .py |-. Env | -__ init__.py |-. Gitignore
이 포괄적 인 구현 안내서를 통해 프로젝트를 개념에서 현실로 가져 오기 위해 자세한 단계와 실용적인 기술을 살펴보십시오.
Models.py 파일에서 데이터 모델을 작성하여 시작합니다.
Dataclasses에서 Dataclass를 가져옵니다 가져 오기 입력에서 주석이 붙어 있습니다 asyncpg 가져 오기 annotated_types import minlen에서 Pydantic Import Basemodel, Field에서 @dataclass 클래스 DEPS : Conn : Asyncpg.connection 클래스 성공 (Basemodel) : sql_query : 주석이 달린 [str, minlen (1)] 설명 : str = field ( "", description = "sql 쿼리의 설명, Markdown") 클래스 invalidRequest (Basemodel) : ERROR_MESSAGE : str
위 코드에서
이 코드는 데이터베이스 연결 관리, 입력 유효성 검사, 구조화 된 응답 처리 및 오류 처리를위한 기반을 설정했습니다.
이제 서비스 모듈에서 SQL 생성을위한 Pydanticai 서비스를 구현할 것입니다.
가져 오기 라이브러리 및 구성
OS 가져 오기 수입 조합 입력에서 dotenv import load_dotenv에서 asyncpg 가져 오기 typing_extensions import findealias에서 pydantic_ai import Agent, ModelEtry, RunContext에서 pydantic_ai.models.gemini import geminimodel에서 스키마에서 db_schema를 가져옵니다 모델에서 DEP, 성공, InvalIdRequest를 가져옵니다
구성하려면 프로젝트 루트에서 .env 파일을 작성하고 Gemini API 키를 거기에 넣으십시오.
# .env gemini_api_key = "asgfhkdhjy457gthjhajbsd"
그런 다음 service.py 파일에서 :
load_dotenv () gemini_api_key = os.getenv ( "google_api_key")
`에서 Google API 키를로드합니다. Env` 파일.
응답 : findealias = Union [성공, InvalidRequest] model = geminimodel ( "Gemini-1.5-Flash", api_key = gemini_api_key, )) 에이전트 = 에이전트 ( 모델, result_type = 응답, # 유형 : 무시 deps_type = deps, ))
이제 SQL 쿼리 생성에 대한 시스템 프롬프트를 정의합니다.
@agent.system_prompt Async def system_prompt () -> str : 반환 f "" "\ 다음 Postgresql 레코드 테이블을 감안할 때 귀하의 직업은 다음과 같습니다. 사용자의 요청에 맞는 SQL 쿼리를 작성하십시오. 데이터베이스 스키마 : {db_schema} 예 요청 : 임대료가 $ 4.00보다 큰 임대료와 'PG'등급을 가진 모든 영화를 찾으십시오. 응답 : 제목, rental_rate를 선택하십시오 영화에서 여기서 rental_rate> 4.00 및 등급 = 'pg'; 예 요청 : 가장 긴 길이의 필름을 찾으십시오 응답 : 제목, 길이를 선택하십시오 영화에서 여기서 길이 = (필름에서 최대 (길이)를 선택); 예 요청 : 각 카테고리에서 필름의 평균 임대 기간을 찾으십시오. 응답 : C.Name, avg (f.rental_duration)를 평균 _rental_duration으로 선택하십시오 카테고리에서 c c.category_id = fc.category_id에서 film_category fc에 가입하십시오 fc.film_id = f.film_id에서 필름 F에 가입하십시오 C.Name에 의해 그룹 평균 _rental_duration desc의 주문; "" "
여기서 AI 모델의 기본 컨텍스트를 정의하고 모델의 응답을 안내하기위한 예제 쿼리를 제공합니다. 또한 모델에 데이터베이스 스키마 정보가 포함되어 모델이 스키마를 분석하고 더 나은 응답을 생성 할 수 있습니다.
AI 모델로부터 오류가없고 프로젝트 요구 사항까지 응답을 얻으려면 응답을 확인합니다.
@agent.result_validator Async def validate_result (ctx : runcontext [deps], 결과 : 응답) -> 응답 : Isinstance (결과, InvalidRequest) : 반환 결과 # Gemini는 종종 SQL에 Extraneos 백래시를 추가합니다 result.sql_query = result.sql_query.replace ( "\\", "") 결과가 아닌 경우 SQL_QUERY.UPPER (). StartSwith ( "Select") : ModelEtry Raven ( "선택 쿼리를 작성하십시오") 노력하다: ctx.deps.conn.execute를 기다립니다 (f "expler {result.sql_query}") asyncpg.exceptions.postgreserror를 제외하고 E : e에서 modelretry (f "유효하지 않은 sql : {e}")를 높이십시오 또 다른: 반환 결과
여기서 생성 된 SQL 쿼리를 검증하고 처리합니다.
주요 유효성 검사 단계 :
데이터베이스 스키마를 얻으려면 Postgres 설정 중에 설치 한 PGADMIN4를 엽니 다. ' DVDRental' 데이터베이스로 이동하여 마우스 오른쪽 버튼을 클릭 한 다음 'ERD를 클릭하여' ERD '를 클릭하십시오.
아래의 ERD 다이어그램을 얻을 수 있으며 이제 ERD에서 SQL을 생성합니다 (이미지의 둥근 검은 색 표시 참조).
스키마를 schema.py 모듈로 복사하십시오.
# schema.py db_schema = "" " 시작하다; 공개되지 않은 경우 테이블을 만듭니다 ( actor_id Serial NOT NULL, First_Name 문자 Varying (45) PG_CATALOG를 수집합니다. "기본값"NOT NULL, last_name 문자 Varying (45) PG_CATALOG를 수집합니다. "기본값"NOT NULL, 시간대가없는 last_update timestamp not null default now (), 구속 조건 actor_pkey 1 차 키 (actor_id) ); . . . . . . "" "
위의 코드 블록은 중단되어 전체 코드를 얻으려면 프로젝트 리포지어를 방문하십시오.
이제 필요한 모든 모듈이 완료되었으며 주요 방법을 구현하고 테스트 할 시간입니다.
주요 기능 정의 및 프롬프트 처리를 수행합니다.
Asyncio 가져 오기 OS 가져 오기 SYS 가져 오기 수입 조합 입력에서 dotenv import load_dotenv에서 asyncpg 가져 오기 DevTools 가져 오기 디버그에서 typing_extensions import findealias에서 pydantic_ai 수입 에이전트에서 pydantic_ai.models.gemini import geminimodel에서 모델에서 DEP, 성공, InvalIdRequest를 가져옵니다 load_dotenv () gemini_api_key = os.getenv ( "google_api_key") 응답 : findealias = Union [성공, InvalidRequest] model = geminimodel ( "Gemini-1.5-Flash", api_key = gemini_api_key, )) 에이전트 = 에이전트 ( 모델, result_type = 응답, # 유형 : 무시 deps_type = deps, )) Async def main () : LEN (sys.argv) == 1 : 1 : 프롬프트 = "선택 쿼리를 작성하십시오" 또 다른: 프롬프트 = sys.argv [1] # 데이터베이스 연결 conn = aisyncpg.connect ( user = "postgres", password = "avizyt", host = "localhost", 포트 = 5432, 데이터베이스 = "dvdrental", )) 노력하다: deps = deps (Conn) result = await agent.run (프롬프트, deps = deps) 결과 = 디버그 (result.data) print ( "========== 쿼리 ========") print (debug (result.sql_query)) print ( "========== 설명 ========") print (debug (result.explanation)) 마지막으로: conn.close ()를 기다립니다. __name__ == "__main__"인 경우 : asyncio.run (main ())
여기서 먼저 비동기 기본 함수를 정의하고 클라이언트 쿼리의 명령 줄 인수를 확인하십시오. ARG가 제공되지 않으면 기본 프롬프트를 사용하십시오.
그런 다음 Postgres Connection 매개 변수를 설정하여 DVDRental 데이터베이스 서비스와 연결합니다.
Try Block에서 데이터베이스 연결을 사용하여 DEPS 인스턴스를 작성하고 프롬프트로 AI 에이전트를 실행하고 디버그 기능 ( PIP 설치 DevTools )을 사용하여 결과를 처리합니다. 그런 다음 생성 된 SQL 쿼리 및 쿼리 설명을 포함하여 형식화 된 출력을 인쇄합니다. 그 후 마침내 데이터베이스 연결을 닫았습니다.
이제 다음과 같은 기본 모듈을 실행하십시오.
# 터미널에서 Python Main.py "각 고객에 대한 총 임대 수 받기"
산출:
PGADMIN4에서 SQL 쿼리를 테스트 한 후 :
우와! 우리가 원하는 것처럼 작동합니다. 이와 같은 더 많은 쿼리를 테스트하고 학습을 즐기십시오.
이 프로젝트는 데이터베이스 상호 작용을보다 직관적이고 액세스 할 수있는 중요한 단계를 나타냅니다. AI의 힘을 강력한 소프트웨어 엔지니어링 원칙과 결합함으로써 SQL 쿼리를 생성 할뿐만 아니라 실제 사용을 위해 안전하고 교육적이며 실용적인 방식으로 수행하는 도구를 만들었습니다.
이 구현의 성공은 AI가 기존 데이터베이스 운영을 대체하기보다는 향상 될 가능성을 보여 주며 학습과 생산성 모두에 귀중한 도구를 제공합니다.
프로젝트 Repo -이 프로젝트에 사용 된 모든 코드는 여기에서 제공됩니다.
A. Pydanticai는 내장 오류 확인 및 상황에 맞는 이해를 갖춘 유형 안전, 검증 된 코드 생성을 제공합니다.
Q 2. Gemini-1.5-Flash는 프로젝트에 어떻게 기여합니까?A. Gemini 모델은 고급 자연 언어 처리를 제공하여 복잡한 인간 쿼리를 정확한 SQL 문으로 변환합니다.
Q 3.이 프로젝트를 다른 AI 응용 프로그램으로 확장 할 수 있습니까?A. 절대적으로! 이 아키텍처는 다양한 도메인에서 코드 생성, 데이터 변환 및 지능형 자동화에 적합 할 수 있습니다.
이 기사에 표시된 미디어는 분석 Vidhya가 소유하지 않으며 저자의 재량에 따라 사용됩니다.
위 내용은 Pydanticai를 사용하여 생산 등급 LLM 구동 응용 프로그램을 구축하십시오의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!