跳到主要內容
Open In ColabOpen on GitHub

Chat Writer

此筆記本提供 Writer 聊天 入門的快速概覽。

Writer 有多種聊天模型。您可以在 Writer 文件中找到關於他們最新模型及其成本、上下文視窗和支援的輸入類型的資訊。

概觀

整合細節

類別套件本地可序列化JS 支援套件下載次數最新套件
ChatWriterlangchain-writerPyPI - DownloadsPyPI - Version

模型功能

工具呼叫結構化輸出JSON 模式圖片輸入音訊輸入影片輸入Token 級別串流原生非同步Token 使用量Logprobs

憑證

註冊 Writer AI Studio 並依照此 快速入門 取得 API 金鑰。然後,設定 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 金鑰

# 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-x-004",
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 X 004)支援 工具呼叫,讓您可以描述工具及其引數。模型將傳回一個 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() 方法不會建立具有綁定工具的新實例,而是將接收到的 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 參考文件:ChatPromptTemplate

API 參考文件

有關所有 ChatWriter 功能和配置的詳細文件,請前往 API 參考文件

其他資源

您可以在 Writer 文件中找到有關 Writer 模型(包括成本、上下文視窗和支援的輸入類型)和工具的資訊。


此頁面是否對您有幫助?