Skip to main content

llama-index llms cortex integration

Project description

LlamaIndex Llms Integration: Cortex

Overview

Integrate with Snowflake Cortex API. 3 ways to authenticate:

  1. Snowpark Session object (recommended way) this allows authentication via Snowpark Container Services default token, via Oauth, password, private key, web browser, or any other method.

    Guide to creating sessions: https://docs.snowflake.com/en/developer-guide/snowpark/python/creating-session

  2. Path to a private key file. Encrypted private keys unsupported. For encrypted keys: use a Snowpark Session instead, with the 'private_key_file_pwd' parameter.

  3. JWT token

Installation

pip install llama-index-llms-cortex

Example using a Private Key

import os
from llama_index.llms.cortex import Cortex


llm = Cortex(
    model="llama3.2-1b",
    user=os.environ["YOUR_SF_USER"],
    account=os.environ["YOUR_SF_ACCOUNT"],
    private_key_file=os.environ["PATH_TO_SF_PRIVATE_KEY"],
)

completion_response = llm.complete(
    "write me a haiku about a snowflake", temperature=0.0
)
print(completion_response)

Example Using a Session

import os
from snowflake.snowpark import Session
from llama_index.llms.cortex import Cortex

connection_parameters = {
    "account": "<your snowflake account>",
    "user": "<your snowflake user>",
    "role": "<your snowflake role>",
    "database": "<your snowflake database>",
    "schema": "<your snowflake schema",
    "warehouse": "<your snowflake warehouse>",
    "private_key_file": "<path to file>",
    "authenticator": "JWT_AUTHENTICATOR",  # use this for private key
}
session = Session.builder.configs(connection_parameters).create()

llm = Cortex(
    model="llama3.2-1b",
    user=os.environ["YOUR_SF_USER"],
    account=os.environ["YOUR_SF_ACCOUNT"],
    session=session,
)

completion_response = llm.complete(
    "write me a haiku about a snowflake", temperature=0.0
)
print(completion_response)

Connect in an SPCS environment

# That's it! That's all we need.
llm = Cortex(model="llama3.2-1b")
completion_response = llm.complete(
    "write me a haiku about a snowflake", temperature=0.0
)
print(completion_response)

Create a session within an SPCS environment

import os
from snowflake.snowpark import Session
from llama_index.llms.cortex import Cortex
from llama_index.llms.cortex import utils as cortex_utils

#! Note now the user and role parameters are left blank for SPCS !
connection_parameters = {
    "account": "<your snowflake account>",
    "database": "<your snowflake database>",
    "schema": "<your snowflake schema",
    "warehouse": "<your snowflake warehouse>",
    "token": cortex_utils.get_default_spcs_token(),
    "host": cortex_utils.get_spcs_base_url(),
    "authenticator": "OAUTH",
}
session = Session.builder.configs(connection_parameters).create()

llm = Cortex(model="llama3.2-1b", session=session)

completion_response = llm.complete(
    "write me a haiku about a snowflake", temperature=0.0
)
print(completion_response)

TODO

1 snowflake token counting 2 Pull metadata for snowflake models from Snowflake official documentation (support ticket is out, they said they'll get back to me 4-20-2025)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

llama_index_llms_cortex-0.4.0.tar.gz (9.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

llama_index_llms_cortex-0.4.0-py3-none-any.whl (9.1 kB view details)

Uploaded Python 3

File details

Details for the file llama_index_llms_cortex-0.4.0.tar.gz.

File metadata

File hashes

Hashes for llama_index_llms_cortex-0.4.0.tar.gz
Algorithm Hash digest
SHA256 c015b879cd2b03babba9584a0353c0478350d077bc49401da6da567db7f91429
MD5 999b5cd345df49fd81cb5b0f2f4f35df
BLAKE2b-256 0ec3528d80c491c260f22314c7f85fc7db564c58e37cc739a3d059fdc52de033

See more details on using hashes here.

File details

Details for the file llama_index_llms_cortex-0.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for llama_index_llms_cortex-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 650e80658e84fdde9d869399f6d7b125fb00cde3843ada22608b9f38494368af
MD5 27ccf65a9c03cbcbab9c33948c1e19c0
BLAKE2b-256 ebe4c4202a35c74b5eef34c6d37c92fc54c397e051a35e710395ea082a0695b3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page