跳到主要内容
开始使用 RunPod LLM。

概览

本指南涵盖了如何使用 LangChain 的 RunPod LLM 类来与托管在 RunPod Serverless 上的文本生成模型进行交互。

设置

  1. 安装软件包
    pip install -qU langchain-runpod
    
  2. 部署一个 LLM 终端: 遵循 RunPod 提供商指南 中的设置步骤,在 RunPod Serverless 上部署一个兼容的文本生成终端并获取其终端 ID。
  3. 设置环境变量: 确保已设置 RUNPOD_API_KEYRUNPOD_ENDPOINT_ID
import getpass
import os

# Make sure environment variables are set (or pass them directly to RunPod)
if "RUNPOD_API_KEY" not in os.environ:
    os.environ["RUNPOD_API_KEY"] = getpass.getpass("Enter your RunPod API Key: ")
if "RUNPOD_ENDPOINT_ID" not in os.environ:
    os.environ["RUNPOD_ENDPOINT_ID"] = input("Enter your RunPod Endpoint ID: ")

实例化

初始化 RunPod 类。您可以通过 model_kwargs 传递模型特定参数并配置轮询行为。
from langchain_runpod import RunPod

llm = RunPod(
    # runpod_endpoint_id can be passed here if not set in env
    model_kwargs={
        "max_new_tokens": 256,
        "temperature": 0.6,
        "top_k": 50,
        # Add other parameters supported by your endpoint handler
    },
    # Optional: Adjust polling
    # poll_interval=0.3,
    # max_polling_attempts=100
)

调用

使用标准的 LangChain .invoke().ainvoke() 方法调用模型。还支持通过 .stream().astream() 进行流式传输(通过轮询 RunPod 的 /stream 终端模拟实现)。
prompt = "Write a tagline for an ice cream shop on the moon."

# Invoke (Sync)
try:
    response = llm.invoke(prompt)
    print("--- Sync Invoke Response ---")
    print(response)
except Exception as e:
    print(
        f"Error invoking LLM: {e}. Ensure endpoint ID/API key are correct and endpoint is active/compatible."
    )
# Stream (Sync, simulated via polling /stream)
print("\n--- Sync Stream Response ---")
try:
    for chunk in llm.stream(prompt):
        print(chunk, end="", flush=True)
    print()  # Newline
except Exception as e:
    print(
        f"\nError streaming LLM: {e}. Ensure endpoint handler supports streaming output format."
    )

异步用法

# AInvoke (Async)
try:
    async_response = await llm.ainvoke(prompt)
    print("--- Async Invoke Response ---")
    print(async_response)
except Exception as e:
    print(f"Error invoking LLM asynchronously: {e}.")
# AStream (Async)
print("\n--- Async Stream Response ---")
try:
    async for chunk in llm.astream(prompt):
        print(chunk, end="", flush=True)
    print()  # Newline
except Exception as e:
    print(
        f"\nError streaming LLM asynchronously: {e}. Ensure endpoint handler supports streaming output format."
    )

链接

LLM 与 LangChain Expression Language (LCEL) 链无缝集成。
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import PromptTemplate

# Assumes 'llm' variable is instantiated from the 'Instantiation' cell
prompt_template = PromptTemplate.from_template("Tell me a joke about {topic}")
parser = StrOutputParser()

chain = prompt_template | llm | parser

try:
    chain_response = chain.invoke({"topic": "bears"})
    print("--- Chain Response ---")
    print(chain_response)
except Exception as e:
    print(f"Error running chain: {e}")

# Async chain
try:
    async_chain_response = await chain.ainvoke({"topic": "robots"})
    print("--- Async Chain Response ---")
    print(async_chain_response)
except Exception as e:
    print(f"Error running async chain: {e}")

终端考虑因素

  • 输入: 终端处理程序应期望提示字符串在 {"input": {"prompt": "...", ...}} 中。
  • 输出: 处理程序应在最终状态响应的 "output" 键中返回生成的文本(例如,{"output": "生成的文本..."}{"output": {"text": "..."}})。
  • 流式传输: 对于通过 /stream 终端模拟的流式传输,处理程序必须在状态响应的 "stream" 键中填充一个分块字典列表,例如 [{"output": "token1"}, {"output": "token2"}]

API 参考

有关 RunPod LLM 类、参数和方法的详细文档,请参阅源代码或生成的 API 参考(如果可用)。 源代码链接:https://github.com/runpod/langchain-runpod/blob/main/langchain_runpod/llms.py
以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。
© . This site is unofficial and not affiliated with LangChain, Inc.