Pydantic-AI-Pinescript-Expert: Pine Script v6 전문가를 위한 RAG AI 에이전트
요약
Pydantic AI와 RAG 기술을 활용하여 Pine Script v6 전문가 역할을 수행하는 AI 에이전트 프로젝트입니다. 벡터 검색과 LLM을 결합하여 TradingView 지표 및 전략 코드를 생성하고 문맥에 맞는 답변을 제공합니다.
핵심 포인트
- Pydantic AI 기반의 RAG 에이전트 아키텍처
- pgvector를 활용한 Pine Script v6 문서의 의미론적 검색
- Streamlit 웹 UI 및 CLI 인터페이스 지원
- OpenAI 및 OpenRouter 멀티 프로바이더 지원
Pydantic AI로 구축된 검색 증강 생성 (RAG) AI 에이전트로, TradingView의 커스텀 지표 및 전략을 위한 프로그래밍 언어인 Pine Script v6의 전문가 역할을 수행합니다. 이 에이전트는 벡터 검색 (Vector Search) 기술과 대규모 언어 모델 (LLM)을 활용하여 정확하고 문맥을 파악한 답변을 제공하며, 작동 가능한 코드 예시를 생성합니다.
포괄적인 Pine Script 지식: 자연어 질의를 통해 Pine Script v6 문서 전체에 접근할 수 있습니다.
코드 생성 (Code Generation): 사용자 요구 사항에 따라 커스텀 지표 및 전략을 생성합니다.
대화형 인터페이스: 전문가와 상호작용할 수 있는 다양한 방법을 제공합니다:
- Streamlit으로 구축된 웹 기반 UI
- 대화형 명령줄 인터페이스 (CLI)
- 스크립팅을 위한 단일 쿼리 실행
멀티 프로바이더 지원: LLM 백엔드로 OpenAI 또는 OpenRouter 모델을 모두 사용할 수 있습니다.
벡터 검색 (Vector Search): 관련 문서의 효율적인 의미론적 검색을 위해 pgvector를 활용합니다.
전체 문서 처리: TradingView의 Pine Script 문서를 처리하고 분석하는 커스텀 크롤러를 사용합니다.
지속적인 채팅 기록: Streamlit UI에서 대화 문맥을 기억합니다.
광범위한 API: Pydantic AI 기반 아키텍처를 사용하여 다른 시스템과 통합할 수 있습니다.
Python 3.9+
PostgreSQL (pgvector 확장 포함)
OpenAI API key (임베딩 및 기본 LLM 사용을 위해 필요)
OpenRouter API key (선택 사항, 대체 LLM 프로바이더용)
Docker (선택 사항, pgvector가 포함된 PostgreSQL 실행용)
저장소 복제 (Clone the repository)
git clone https://github.com/FaustoS88/Pydantic-AI-Pinescript-Expert.git cd pinescript-expert
Docker를 사용하여 pgvector가 포함된 PostgreSQL 설정
# Docker 볼륨을 위한 디렉토리가 존재하지 않으면 생성
mkdir -p ~/pinescript_postgres_data
# 표준 5432 포트와 다른 54322 포트에서 pgvector가 포함된 PostgreSQL 실행
...
필수 패키지 설치 및 환경 설정
python setup.py # 생성된 .env 파일을 본인의 API 키로 수정
데이터베이스 초기화
python init_db.py
Pine Script 문서로 데이터베이스 채우기
python pinescript_crawler.py
Streamlit UI 사용 시작하기
streamlit run streamlit_ui.py
또는, CLI (Command Line Interface) 인터페이스를 사용하려면:
python interactive.py
웹 UI를 통해 에이전트와 상호작용하려면 Streamlit 인터페이스를 시작하세요:
streamlit run streamlit_ui.py
에이전트와 대화형으로 접속하려면 인터랙티브 셸 (Interactive Shell)을 실행하세요:
python interactive.py
세션 예시:
=================================================================
Pine Script Expert Agent - Interactive Shell
=================================================================
...
//@version=6
strategy("Simple MA Crossover Strategy", overlay=true)
// 입력 파라미터 (Input parameters)
fastLength = input.int(9, "Fast MA Length")
slowLength = input.int(21, "Slow MA Length")
// 이동 평균 (Moving averages) 계산
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)
// 교차 조건 (Crossover conditions) 결정
buySignal = ta.crossover(fastMA, slowMA)
sellSignal = ta.crossunder(fastMA, slowMA)
// 전략 실행
if (buySignal)
strategy.entry("Buy", strategy.long)
if (sellSignal)
strategy.entry("Sell", strategy.short)
// 이동 평균 플로팅 (Plotting)
plot(fastMA, "Fast MA", color=color.blue)
plot(slowMA, "Slow MA", color=color.red)
// 매수/매도 신호 플로팅
plotshape(buySignal, "Buy Signal", shape.triangleup, location.belowbar, color.green, size=size.small)
plotshape(sellSignal, "Sell Signal", shape.triangledown, location.abovebar, color.red, size=size.small)
주요 구성 요소 설명:
...
### 단일 쿼리 모드 (Single Query Mode)
일회성 질의를 위해 에이전트를 사용하세요:
```bash
python run.py query "How do I calculate RSI in Pine Script?"
이 프로젝트에는 벡터 데이터베이스 (Vector Database)를 검사하기 위한 도구들이 포함되어 있습니다:
# 데이터베이스 내 문서 개수 확인
python db_inspect.py count
# 문서 제목 목록 확인 (처음 20개)
...
검색 파이프라인 (Retrieval pipeline)은 두 단계에 걸쳐 체계적으로 개선되었으며, RAGAS (40개 질문 테스트 세트, 카테고리: 함수 조회, 개념, 코드 생성, 복합 다중 개념)를 통해 측정되었습니다.
| 파이프라인 | 충실도 (Faithfulness) | 문맥 관련성 (Context Relevance) | 베이스라인 대비 |
|---|---|---|---|
| 베이스라인 (평면 청크, L2 검색) | 0.779 | n/a | — |
| Tier 1 (하이브리드 검색, MMR, 재귀적 청킹) | 0.774 | — | -0.6% |
| Tier 2 (+ Anthropic Contextual Retrieval) | 0.833 | 0.919 | +6.9% |
Tier 2를 통해 코드 생성 (Code generation) 능력이 0.51 → 0.64 (+21%)로 향상되었습니다. 문맥 관련성 (Context Relevance) 0.919는 검색기 (Retriever)가 92%의 확률로 올바른 청크를 찾는다는 것을 의미합니다. 나머지 격차는 검색의 문제가 아니라 콘텐츠의 문제 (문서에 완전한 전략 템플릿이 부족함)입니다.
Tier 1 개선 사항 (문서):
하이브리드 BM25+벡터 검색 (hybrid BM25+vector search), 유사도 임계값 (similarity threshold), 교차 인코더 재순위화 (cross-encoder reranking), 오버랩을 포함한 재귀적 청킹 (recursive chunking with overlap), MMR 중복 제거 (MMR deduplication), 문맥적 청크 헤더 (contextual chunk headers)
Tier 2 개선 사항 (문서):
코드 인식 청킹 (code-aware chunking, 코드 블록은 절대 분할되지 않음), Anthropic Contextual Retrieval (크롤링 시 청크당 LLM 접두사 추가), 콘텐츠 유형 감지 (content type detection), 메타데이터 컬럼 (metadata columns)
평가 세부 정보: Tier 1 | Tier 2
# Tier 1 검색 (하이브리드 + MMR)
python tests/ragas_eval.py --retrieval tier1 --output results/tier1_YYYYMMDD.json
# 베이스라인 검색 (L2 전용)
...
# 표준 재크롤링 (코드 인식 분할, 무료)
python pinescript_recrawl_light.py --clear
# 문맥적 재크롤링 (청크당 LLM 접두사 추가 — 4,910개 청크 기준 약 $8, 2시간 소요)
...
agent.py: RAG 기능을 갖춘 핵심 에이전트 구현
pinescript_crawler.py: 문서 크롤러 및 벡터 데이터베이스 구축
db_schema.py: 데이터베이스 스키마 정의
streamlit_ui.py: 지속적인 채팅 기록을 지원하는 웹 기반 사용자 인터페이스
interactive.py: 명령줄 인터페이스 (CLI)
run.py: 다양한 운영 모드를 위한 편의용 실행기
init_db.py: 데이터베이스 초기화
clear_database.py: 데이터베이스 정리 유틸리티
db_inspect.py: 데이터베이스 검사 도구
--model 플래그를 사용하여 LLM 제공업체(provider)를 전환할 수 있습니다. 프리셋(Presets)은 config.py에 정의되어 있습니다.
:
| 프리셋 (Preset) | 모델 (Model) | 온도 (Temperature) | 최대 토큰 (Max Tokens) |
|---|---|---|---|
default | openai/gpt-4.1-mini | 0.2 | 2000 |
codex | openai/gpt-5.3-codex | 0.1 | 4096 |
opus | anthropic/claude-opus-4-6 | 0.2 | 4096 |
flash | google/gemini-3-flash-preview | 0.3 | 2000 |
# 프리셋 사용하기
python run.py query "How to use request.security?" --model codex
python run.py interactive --model opus
...
모든 프리셋은 OpenRouter를 통해 라우팅됩니다. .env 파일에 OPENROUTER_API_KEY라는 이름으로 API 키를 추가하세요. 키가 없으면 에이전트는 기본 OpenAI 모델로 폴백(fallback)됩니다.
환경 변수를 통해 기본값을 재정의할 수도 있습니다:
PINESCRIPT_MODEL=openai:gpt-4o # 기본 LLM
PINESCRIPT_TEMPERATURE=0.3 # 응답 창의성 (creativity)
PINESCRIPT_MAX_TOKENS=4096 # 최대 응답 길이
...
.env 파일에서 데이터베이스 설정을 구성하세요:
DATABASE_URL=postgresql://username:password@hostname:port/database
기여(Contributions)를 환영합니다!
이 프로젝트는 MIT 라이선스 하에 라이선스가 부여됩니다 - 자세한 내용은 LICENSE 파일을 참조하세요.
- 에이전트 프레임워크를 위한 Pydantic AI
- Pine Script 언어 및 문서를 위한 TradingView
- LLM 기능을 위한 OpenAI 및 OpenRouter
- 벡터 검색(vector search) 기능을 위한 pgvector
- 웹 인터페이스를 위한 Streamlit
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기