Seekr는 구조화되고 설명 가능하며 투명한 AI 상호작용을 위한 AI 기반 솔루션을 제공합니다.
이 가이드는 Seekr chat models 시작하기에 대한 간단한 개요를 제공합니다. 모든 ChatSeekrFlow 기능 및 구성에 대한 자세한 문서는 API reference를 참조하세요.

Overview

ChatSeekrFlow class는 SeekrFlow에서 호스팅되는 chat model endpoint를 래핑하여 LangChain 애플리케이션과의 원활한 통합을 가능하게 합니다.

Integration Details

ClassPackageLocalSerializableDownloadsVersion
ChatSeekrFlowseekraibetaPyPI - DownloadsPyPI - Version

Model Features

Tool callingStructured outputJSON modeImage inputAudio inputVideo inputToken-level streamingNative asyncToken usageLogprobs

Supported Methods

ChatSeekrFlowasync API를 제외한 ChatModel의 모든 메서드를 지원합니다.

Endpoint Requirements

ChatSeekrFlow가 래핑하는 serving endpoint는 반드시 OpenAI 호환 chat input/output 형식을 가져야 합니다. 다음과 같은 용도로 사용할 수 있습니다:
  1. Fine-tuned Seekr models
  2. Custom SeekrFlow models
  3. Seekr의 retrieval system을 사용하는 RAG-enabled models
async 사용에 대해서는 AsyncChatSeekrFlow를 참조하세요 (곧 출시 예정).

LangChain에서 ChatSeekrFlow 시작하기

이 노트북은 LangChain에서 SeekrFlow를 chat model로 사용하는 방법을 다룹니다.

Setup

필요한 dependencies가 설치되어 있는지 확인하세요:
pip install seekrai langchain langchain-community
요청을 인증하려면 Seekr의 API key도 필요합니다.
# Standard library
import getpass
import os

# Third-party
from langchain.prompts import ChatPromptTemplate
from langchain.schema import HumanMessage
from langchain_core.runnables import RunnableSequence

# OSS SeekrFlow integration
from langchain_seekrflow import ChatSeekrFlow
from seekrai import SeekrFlow

API Key Setup

요청을 인증하려면 API key를 environment variable로 설정해야 합니다. 아래 셀을 실행하세요. 또는 쿼리를 실행하기 전에 수동으로 할당하세요:
SEEKR_API_KEY = "your-api-key-here"
os.environ["SEEKR_API_KEY"] = getpass.getpass("Enter your Seekr API key:")

Instantiation

os.environ["SEEKR_API_KEY"]
seekr_client = SeekrFlow(api_key=SEEKR_API_KEY)

llm = ChatSeekrFlow(
    client=seekr_client, model_name="meta-llama/Meta-Llama-3-8B-Instruct"
)

Invocation

response = llm.invoke([HumanMessage(content="Hello, Seekr!")])
print(response.content)
Hello there! I'm Seekr, nice to meet you! What brings you here today? Do you have a question, or are you looking for some help with something? I'm all ears (or rather, all text)!

Chaining

prompt = ChatPromptTemplate.from_template("Translate to French: {text}")

chain: RunnableSequence = prompt | llm
result = chain.invoke({"text": "Good morning"})
print(result)
content='The translation of "Good morning" in French is:\n\n"Bonne journée"' additional_kwargs={} response_metadata={}
def test_stream():
    """Test synchronous invocation in streaming mode."""
    print("\n🔹 Testing Sync `stream()` (Streaming)...")

    for chunk in llm.stream([HumanMessage(content="Write me a haiku.")]):
        print(chunk.content, end="", flush=True)


# ✅ Ensure streaming is enabled
llm = ChatSeekrFlow(
    client=seekr_client,
    model_name="meta-llama/Meta-Llama-3-8B-Instruct",
    streaming=True,  # ✅ Enable streaming
)

# ✅ Run sync streaming test
test_stream()
🔹 Testing Sync `stream()` (Streaming)...
Here is a haiku:

Golden sunset fades
Ripples on the quiet lake
Peaceful evening sky

Error Handling & Debugging

# Define a minimal mock SeekrFlow client
class MockSeekrClient:
    """Mock SeekrFlow API client that mimics the real API structure."""

    class MockChat:
        """Mock Chat object with a completions method."""

        class MockCompletions:
            """Mock Completions object with a create method."""

            def create(self, *args, **kwargs):
                return {
                    "choices": [{"message": {"content": "Mock response"}}]
                }  # Mimic API response

        completions = MockCompletions()

    chat = MockChat()


def test_initialization_errors():
    """Test that invalid ChatSeekrFlow initializations raise expected errors."""

    test_cases = [
        {
            "name": "Missing Client",
            "args": {"client": None, "model_name": "seekrflow-model"},
            "expected_error": "SeekrFlow client cannot be None.",
        },
        {
            "name": "Missing Model Name",
            "args": {"client": MockSeekrClient(), "model_name": ""},
            "expected_error": "A valid model name must be provided.",
        },
    ]

    for test in test_cases:
        try:
            print(f"Running test: {test['name']}")
            faulty_llm = ChatSeekrFlow(**test["args"])

            # If no error is raised, fail the test
            print(f"❌ Test '{test['name']}' failed: No error was raised!")
        except Exception as e:
            error_msg = str(e)
            assert test["expected_error"] in error_msg, f"Unexpected error: {error_msg}"
            print(f"✅ Expected Error: {error_msg}")


# Run test
test_initialization_errors()
Running test: Missing Client
✅ Expected Error: SeekrFlow client cannot be None.
Running test: Missing Model Name
✅ Expected Error: A valid model name must be provided.

API reference


Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I