Skip to main content
本指南提供了开始使用 WRITER 聊天的快速概览。 WRITER 有多个聊天模型。您可以在 WRITER 文档中找到关于最新模型及其费用、上下文窗口和支持输入类型的信息。

概述

集成详情

可序列化JS 支持下载量版本
ChatWriterlangchain-writerPyPI - DownloadsPyPI - Version

模型功能

工具调用结构化输出图像输入音频输入视频输入Token 级流式输出原生异步Token 用量对数概率

凭据

注册 WRITER AI Studio 并按照快速入门获取 API key。然后设置 WRITER_API_KEY 环境变量:
import getpass
import os

if not os.getenv("WRITER_API_KEY"):
    os.environ["WRITER_API_KEY"] = getpass.getpass("Enter your WRITER API key: ")
如果您希望自动追踪模型调用,也可以设置您的 LangSmith API key(取消注释下方代码):
os.environ["LANGSMITH_TRACING"] = "true"
os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")

安装

ChatWriter 可从 langchain-writer 包获取。通过以下命令安装:
pip install -qU langchain-writer

实例化

现在我们可以实例化模型对象以生成聊天补全:
from langchain_writer import ChatWriter

llm = ChatWriter(
    model="palmyra-x5",
    temperature=0,
    max_tokens=None,
    timeout=None,
    max_retries=2,
)

使用

要使用该模型,传入消息列表并调用 invoke 方法:
messages = [
    (
        "system",
        "You are a helpful assistant that translates English to French. Translate the user sentence.",
    ),
    ("human", "I love programming."),
]
ai_msg = llm.invoke(messages)
ai_msg
然后,您可以访问消息的内容:
print(ai_msg.content)

流式输出

您也可以流式输出响应。首先,创建一个流:
messages = [
    (
        "system",
        "You are a helpful assistant that translates English to French. Translate the user sentence.",
    ),
    ("human", "I love programming. Sing a song about it"),
]
ai_stream = llm.stream(messages)
ai_stream
然后,迭代流以获取块:
for chunk in ai_stream:
    print(chunk.content, end="")

工具调用

WRITER 的 Palmyra X5 等模型支持工具调用,允许您描述工具及其参数。模型将返回包含要调用的工具和该工具输入的 JSON 对象。

绑定工具

通过 ChatWriter.bind_tools,您可以轻松将 Pydantic 类、字典 schema、LangChain 工具甚至函数作为工具传递给模型。在底层,这些都会被转换为工具 schema,格式如下:
{
    "name": "...",
    "description": "...",
    "parameters": {...}  # JSONSchema
}
这些会在每次模型调用时传入。 例如,要使用获取指定位置天气的工具,您可以定义一个 Pydantic 类并将其传递给 ChatWriter.bind_tools
from pydantic import BaseModel, Field


class GetWeather(BaseModel):
    """Get the current weather in a given location"""

    location: str = Field(..., description="The city and state, e.g. San Francisco, CA")


llm.bind_tools([GetWeather])
然后,您可以使用该工具调用模型:
ai_msg = llm.invoke(
    "what is the weather like in New York City",
)
ai_msg
最后,您可以访问工具调用并继续执行您的函数:
print(ai_msg.tool_calls)

关于工具绑定的说明

ChatWriter.bind_tools() 方法不会创建绑定了工具的新实例,而是将接收到的 toolstool_choice 存储在初始类实例属性中,以便在使用 ChatWriter 调用时作为参数传递给 Palmyra LLM 调用。这种方式支持不同类型的工具,例如 functiongraphGraph 是远程调用的 WRITER Palmyra 工具之一。更多信息请访问我们的文档 有关 LangChain 中工具使用的更多信息,请访问 LangChain 工具调用文档

批量处理

您还可以批量处理请求并设置 max_concurrency
ai_batch = llm.batch(
    [
        "How to cook pancakes?",
        "How to compose poem?",
        "How to run faster?",
    ],
    config={"max_concurrency": 3},
)
ai_batch
然后,迭代批次以获取结果:
for batch in ai_batch:
    print(batch.content)
    print("-" * 100)

异步使用

以上所有功能(调用、流式输出、批量处理、工具调用)都支持异步使用。

提示模板

提示模板帮助将用户输入和参数转换为语言模型的指令。您可以这样将 ChatWriter 与提示模板结合使用:
from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate(
    [
        (
            "system",
            "You are a helpful assistant that translates {input_language} to {output_language}.",
        ),
        ("human", "{input}"),
    ]
)

chain = prompt | llm
chain.invoke(
    {
        "input_language": "English",
        "output_language": "German",
        "input": "I love programming.",
    }
)

API 参考

有关所有 ChatWriter 功能和配置的详细文档,请前往 API 参考

其他资源

您可以在 WRITER 文档中找到 WRITER 模型(包括费用、上下文窗口和支持的输入类型)和工具的相关信息。