본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 05. 24. 11:54

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.779n/a
Tier 1 (하이브리드 검색, MMR, 재귀적 청킹)0.774-0.6%
Tier 2 (+ Anthropic Contextual Retrieval)0.8330.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)
defaultopenai/gpt-4.1-mini0.22000
codexopenai/gpt-5.3-codex0.14096
opusanthropic/claude-opus-4-60.24096
flashgoogle/gemini-3-flash-preview0.32000
# 프리셋 사용하기
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가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0