本指南提供快速入门 WRITER 的概述 聊天.
WRITER 有多个聊天模型。您可以在以下位置找到有关其最新模型及其价格、上下文窗口和支持的输入类型的信息 WRITER 文档.
概述
集成详情
| 类 | 包 | 可序列化 | JS 支持 | 下载量 | 版本 |
|---|---|---|---|---|---|
ChatWriter | langchain-writer | ❌ | ❌ | !PyPI - 下载量 | !PyPI - 版本 |
模型特性
| 工具调用 | 结构化输出 | 图片输入 | 音频输入 | 视频输入 | Token 级流式输出 | 原生异步 | Token 使用量 | Logprobs |
|---|---|---|---|---|---|---|---|---|
| ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ |
凭证
注册 WRITER AI Studio 并按照此 快速入门 获取 API 密钥。然后,设置 WRITER_API_KEY 环境变量:
if not os.getenv("WRITER_API_KEY"):
os.environ["WRITER_API_KEY"] = getpass.getpass("Enter your WRITER API key: ")
如果您想获取模型调用的自动化追踪,还可以设置您的 LangSmith API 密钥,方法是取消注释以下内容:
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 method:
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"),
]
stream = llm.stream_events(messages, version="v3")
stream
然后,迭代流以获取块:
for token in stream.text:
print(token, end="", flush=True)
工具调用
WRITER 模型(如 Palmyra X5)支持 工具调用,这允许您描述工具及其参数。模型将返回一个包含要调用的工具和该工具输入的 JSON 对象。
绑定工具
使用 ChatWriter.bind_tools,您可以轻松地将 Pydantic 类、字典模式、LangChain 工具甚至函数作为工具传递给模型。在底层,这些会转换为工具模式,如下所示:
{
"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() 方法不会创建带有绑定工具的新实例,而是将接收到的 tools 和 tool_choice 存储在初始类实例属性中,以便在调用 Palmyra LLM 时将其作为参数传递,同时使用 ChatWriter 调用。此方法支持不同类型的工具,例如 function 和 graph. Graph 是远程调用的 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.",
}
)
其他资源
您可以在 WRITER 文档中找到有关 WRITER 模型(包括成本、上下文窗口和支持的输入类型)以及工具的信息 WRITER 文档.