AI 함수

AI 함수

AI 함수를 사용하면 대형 언어 모델(LLM)을 호출해 다양한 텍스트 작업을 수행할 수 있어요. OpenAI와 Anthropic을 직접 지원하고, Ollama를 통해 Llama, DeepSeek, Phi, Mistral, Gemma 등 여러 모델도 쓸 수 있어요.

출처: 문서

본문

LLM은 Trino 외부의 서비스로 제공되어야 해요.

설정 (Configuration)

AI 함수는 외부 LLM 서비스가 필요하기 때문에 기본적으로 사용할 수 없어요. 이 함수를 활성화하려면 카탈로그 속성 파일을 설정해 지정한 카탈로그 이름으로 설정된 LLM을 호출하는 함수를 등록해야 해요.

ai 커넥터를 참조하는 카탈로그 속성 파일 etc/catalog/llm.properties를 만들어요.

connector.name=ai

AI 함수는 ai 스키마 이름으로 사용할 수 있어요. 위 예제에서 함수들은 llm.ai 카탈로그·스키마 접두사를 사용해요.

함수를 정규화된 이름으로 참조하지 않아도 되도록, config.properties 파일의 sql.path SQL 환경 속성에 카탈로그와 스키마 접두사를 포함시켜 설정할 수 있어요.

sql.path=llm.ai

여러 카탈로그를 서로 다른 LLM 프로바이더로 같은 함수를 쓰도록 구성할 수도 있어요. 이 경우에는 SQL 경로에 의존하지 말고 정규화된 이름으로 함수를 참조해야 해요.

프로바이더 (Providers)

AI 함수는 외부 LLM을 호출해요. LLM API 접근은 카탈로그에서 설정해야 해요. 모든 AI 함수 호출의 성능·결과·비용은 LLM 프로바이더와 사용 모델에 따라 달라져요. 텍스트 분석에 적합한 모델을 지정해야 해요.

속성 이름 설명
ai.provider 프로바이더의 필수 이름. Anthropic 프로바이더를 쓰려면 anthropic, OpenAI나 Ollama를 쓰려면 openai여야 해요.
ai.anthropic.endpoint Anthropic API 엔드포인트 URL. 기본값은 https://api.anthropic.com.
ai.anthropic.api-key Anthropic API 접근용 API 키 값. ai.provideranthropic일 때 필수.
ai.openai.endpoint OpenAI API 또는 Ollama 엔드포인트 URL. 기본값은 https://api.openai.com. Ollama로 모델을 쓸 때는 Ollama용 URL 엔드포인트로 설정하고 ai.openai.api-key에 아무 문자열이나 추가해요.
ai.openai.api-key OpenAI API 접근용 API 키 값. ai.provideropenai일 때 필수. Ollama 사용 시에는 필수지만 무시돼요.

AI 함수는 HTTP로 프로바이더에 연결해요. HTTP 클라이언트 속성으로 ai 접두사를 사용해 연결을 구성할 수 있어요.

다음 섹션들은 Anthropic, OpenAI, Ollama 사용을 위한 최소 설정을 보여줘요.

Anthropic

Anthropic 프로바이더는 AI 함수를 수행하기 위해 Anthropic API를 사용해요.

ai.provider=anthropic
ai.model=claude-3-5-sonnet-latest
ai.anthropic.api-key=xxx

카탈로그 속성 파일에 실제 API 키 값을 두지 않도록 시크릿(secrets)을 사용해요.

OpenAI

OpenAI 프로바이더는 AI 함수를 수행하기 위해 OpenAI API를 사용해요.

ai.provider=openai
ai.model=gpt-4o-mini
ai.openai.api-key=xxx

카탈로그 속성 파일에 실제 API 키 값을 두지 않도록 시크릿(secrets)을 사용해요.

Ollama

Ollama는 OpenAI API와 호환되므로, OpenAI 프로바이더를 Ollama와 함께 사용해 AI 함수를 수행할 수 있어요.

ai.provider=openai
ai.model=llama3.3
ai.openai.endpoint=http://localhost:11434
ai.openai.api-key=none

API 키를 지정해야 하지만 Ollama에서는 무시돼요.

Ollama를 통해 자체 호스팅 배포나 벤더에서 Llama, DeepSeek, Phi, Mistral, Gemma 및 기타 모델을 사용할 수 있어요.

모델 설정 (Model configuration)

모든 프로바이더는 여러 모델을 지원해요. AI 함수에 사용할 모델을 하나 이상 설정해야 해요. 모델은 텍스트 분석에 적합해야 해요. 프로바이더와 모델 선택은 모든 AI 함수의 성능·결과·비용에 영향을 줘요.

비용은 구현 프롬프트 크기, 입력 길이, 모델 출력 길이에 따라 AI 함수마다 달라져요. 프로바이더가 입력·출력 토큰을 기준으로 청구하기 때문이에요.

선택적으로 같은 프로바이더의 다른 모델을 각 함수에 오버라이드로 구성할 수 있어요.

속성 이름 설명
ai.model 모델의 필수 이름. 유효한 이름은 프로바이더별로 달라요. 모델은 텍스트 분석에 적합해야 해요. 함수별로 특정 모델을 오버라이드로 설정하지 않는 한 모든 함수에 사용돼요.
ai.analyze-sentiment.model ai_analyze_sentiment()에 다른 모델을 쓰는 선택적 오버라이드.
ai.classify.model ai_classify()에 다른 모델을 쓰는 선택적 오버라이드.
ai.extract.model ai_extract()에 다른 모델을 쓰는 선택적 오버라이드.
ai.fix-grammar.model ai_fix_grammar()에 다른 모델을 쓰는 선택적 오버라이드.
ai.generate.model ai_gen()에 다른 모델을 쓰는 선택적 오버라이드.
ai.mask.model ai_mask()에 다른 모델을 쓰는 선택적 오버라이드.
ai.translate.model ai_translate()에 다른 모델을 쓰는 선택적 오버라이드.

함수 (Functions)

ai 커넥터로 설정된 각 카탈로그의 ai 스키마 아래에서 다음 함수를 사용할 수 있고, 설정된 LLM 프로바이더를 사용해요.

ai_analyze_sentiment(text) → varchar

입력 텍스트의 감정(sentiment)을 분석해요. 감정 결과는 positive, negative, neutral, mixed 중 하나예요.

SELECT ai_analyze_sentiment('I love Trino');
-- positive

ai_classify(text, labels) → varchar

제공된 라벨에 따라 입력 텍스트를 분류해요.

SELECT ai_classify('Buy now!', ARRAY['spam', 'not spam']);
-- spam

ai_extract(text, labels)

제공된 라벨에 대한 값을 입력 텍스트에서 추출해요.

SELECT ai_extract('John is 25 years old', ARRAY['name', 'age']);
-- {name=John, age=25}

ai_fix_grammar(text) → varchar

입력 텍스트의 문법 오류를 수정해요.

SELECT ai_fix_grammar('I are happy. What you doing?');
-- I am happy. What are you doing?

ai_gen(prompt) → varchar

입력 프롬프트를 기반으로 텍스트를 생성해요.

SELECT ai_gen('Describe Trino in a few words');
-- Distributed SQL query engine.

ai_mask(text, labels) → varchar

입력 텍스트에서 제공된 라벨에 해당하는 값을 [MASKED] 텍스트로 바꿔 마스킹해요.

SELECT ai_mask(
    'Contact me at 555-1234 or visit us at 123 Main St.',
    ARRAY['phone', 'address']);
-- Contact me at [MASKED] or visit us at [MASKED].

ai_translate(text, language) → varchar

입력 텍스트를 지정한 언어로 번역해요.

SELECT ai_translate('I like coffee', 'es');
-- Me gusta el café

SELECT ai_translate('I like coffee', 'zh-TW');
-- 我喜歡咖啡

더 알아보기 (Learn more)

AI 함수는 외부 LLM과 연동되는 고급 기능이에요. 시크릿 관리와 HTTP 클라이언트 설정은 Trino의 보안 문서와 설정 문서를 참고해 보세요.