Chat Writer
此筆記本提供 Writer 聊天 入門的快速概覽。
Writer 有多種聊天模型。您可以在 Writer 文件中找到關於他們最新模型及其成本、上下文視窗和支援的輸入類型的資訊。
概觀
整合細節
類別 | 套件 | 本地 | 可序列化 | JS 支援 | 套件下載次數 | 最新套件 |
---|---|---|---|---|---|---|
ChatWriter | langchain-writer | ❌ | ❌ | ❌ |
模型功能
工具呼叫 | 結構化輸出 | 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()
方法不會建立具有綁定工具的新實例,而是將接收到的 tools
和 tool_choice
儲存在初始類別實例屬性中,以便在使用 ChatWriter
調用時將它們作為 Palmyra LLM 呼叫期間的參數傳遞。這種方法支援不同的工具類型,例如 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.",
}
)
API 參考文件
有關所有 ChatWriter 功能和配置的詳細文件,請前往 API 參考文件。
其他資源
您可以在 Writer 文件中找到有關 Writer 模型(包括成本、上下文視窗和支援的輸入類型)和工具的資訊。