跳到主要内容

ChatClovaX

本笔记本提供了一个快速入门指南,帮助你通过 CLOVA Studio 使用 Naver 的 HyperCLOVA X 聊天模型。有关所有 ChatClovaX 功能和配置的详细文档,请访问 API 参考

CLOVA Studio 有多个聊天模型。你可以在 CLOVA Studio API 指南 文档中找到有关最新模型及其成本、上下文窗口和支持的输入类型的信息。

概述

集成详情

本地可序列化JS 支持包下载包最新版
ChatClovaXlangchain-communityPyPI - DownloadsPyPI - Version

模型特性

工具调用结构化输出JSON 模式图像输入音频输入视频输入令牌级流式传输原生异步令牌使用Logprobs

设置

在使用聊天模型之前,你必须完成以下三个步骤。

  1. 创建 NAVER Cloud Platform 账户
  2. 申请使用 CLOVA Studio
  3. 在创建 CLOVA Studio 测试应用或服务应用后找到 API 密钥 (请参阅此处。)

凭证

CLOVA Studio 需要 2 个密钥 (NCP_CLOVASTUDIO_API_KEYNCP_APIGW_API_KEY)。

  • NCP_CLOVASTUDIO_API_KEY 是为每个测试应用或服务应用颁发的
  • NCP_APIGW_API_KEY 是为每个账户颁发的,根据你使用的区域,可以是可选的

这两个 API 密钥可以通过点击 CLOVA Studio 中的 应用请求状态 > 服务应用、测试应用列表 > 每个应用的“详情”按钮 找到

你可以将它们添加到你的环境变量中,如下所示

export NCP_CLOVASTUDIO_API_KEY="your-api-key-here"
export NCP_APIGW_API_KEY="your-api-key-here"
import getpass
import os

if not os.getenv("NCP_CLOVASTUDIO_API_KEY"):
os.environ["NCP_CLOVASTUDIO_API_KEY"] = getpass.getpass(
"Enter your NCP CLOVA Studio API Key: "
)
if not os.getenv("NCP_APIGW_API_KEY"):
os.environ["NCP_APIGW_API_KEY"] = getpass.getpass(
"Enter your NCP API Gateway API key: "
)

如果你想获得模型调用的自动化跟踪,你还可以通过取消注释以下内容来设置你的 LangSmith API 密钥

# os.environ["LANGCHAIN_TRACING_V2"] = "true"
# os.environ["LANGCHAIN_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")

安装

LangChain Naver 集成位于 langchain-community 包中

# install package
!pip install -qU langchain-community

实例化

现在我们可以实例化我们的模型对象并生成聊天完成

from langchain_community.chat_models import ChatClovaX

chat = ChatClovaX(
model="HCX-003",
max_tokens=100,
temperature=0.5,
# clovastudio_api_key="..." # set if you prefer to pass api key directly instead of using environment variables
# task_id="..." # set if you want to use fine-tuned model
# service_app=False # set True if using Service App. Default value is False (means using Test App)
# include_ai_filters=False # set True if you want to detect inappropriate content. Default value is False
# other params...
)
API 参考:ChatClovaX

调用

除了调用之外,我们还支持批处理和流式传输功能。

messages = [
(
"system",
"You are a helpful assistant that translates English to Korean. Translate the user sentence.",
),
("human", "I love using NAVER AI."),
]

ai_msg = chat.invoke(messages)
ai_msg
AIMessage(content='저는 네이버 AI를 사용하는 것이 좋아요.', additional_kwargs={}, response_metadata={'stop_reason': 'stop_before', 'input_length': 25, 'output_length': 14, 'seed': 1112164354, 'ai_filter': None}, id='run-b57bc356-1148-4007-837d-cc409dbd57cc-0', usage_metadata={'input_tokens': 25, 'output_tokens': 14, 'total_tokens': 39})
print(ai_msg.content)
저는 네이버 AI를 사용하는 것이 좋아요.

链式调用

我们可以像这样使用提示模板链接我们的模型

from langchain_core.prompts import ChatPromptTemplate

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

chain = prompt | chat
chain.invoke(
{
"input_language": "English",
"output_language": "Korean",
"input": "I love using NAVER AI.",
}
)
API 参考:ChatPromptTemplate
AIMessage(content='저는 네이버 AI를 사용하는 것이 좋아요.', additional_kwargs={}, response_metadata={'stop_reason': 'stop_before', 'input_length': 25, 'output_length': 14, 'seed': 2575184681, 'ai_filter': None}, id='run-7014b330-eba3-4701-bb62-df73ce39b854-0', usage_metadata={'input_tokens': 25, 'output_tokens': 14, 'total_tokens': 39})

流式传输

system = "You are a helpful assistant that can teach Korean pronunciation."
human = "Could you let me know how to say '{phrase}' in Korean?"
prompt = ChatPromptTemplate.from_messages([("system", system), ("human", human)])

chain = prompt | chat

for chunk in chain.stream({"phrase": "Hi"}):
print(chunk.content, end="", flush=True)
Certainly! In Korean, "Hi" is pronounced as "안녕" (annyeong). The first syllable, "안," sounds like the "ahh" sound in "apple," while the second syllable, "녕," sounds like the "yuh" sound in "you." So when you put them together, it's like saying "ahhyuh-nyuhng." Remember to pronounce each syllable clearly and separately for accurate pronunciation.

附加功能

使用微调模型

你可以通过传入相应的 task_id 参数来调用微调模型。(调用微调模型时,你不需要指定 model_name 参数。)

你可以从相应的测试应用或服务应用详细信息中检查 task_id

fine_tuned_model = ChatClovaX(
task_id="5s8egt3a", # set if you want to use fine-tuned model
# other params...
)

fine_tuned_model.invoke(messages)
AIMessage(content='저는 네이버 AI를 사용하는 것이 너무 좋아요.', additional_kwargs={}, response_metadata={'stop_reason': 'stop_before', 'input_length': 25, 'output_length': 15, 'seed': 52559061, 'ai_filter': None}, id='run-5bea8d4a-48f3-4c34-ae70-66e60dca5344-0', usage_metadata={'input_tokens': 25, 'output_tokens': 15, 'total_tokens': 40})

服务应用

当使用 CLOVA Studio 上线生产级应用程序时,您应该申请并使用服务应用。(请参考此处。)

对于服务应用,会颁发相应的 NCP_CLOVASTUDIO_API_KEY,并且只能使用该密钥进行调用。

# Update environment variables

os.environ["NCP_CLOVASTUDIO_API_KEY"] = getpass.getpass(
"Enter NCP CLOVA Studio API Key for Service App: "
)
chat = ChatClovaX(
service_app=True, # True if you want to use your service app, default value is False.
# clovastudio_api_key="..." # if you prefer to pass api key in directly instead of using env vars
model="HCX-003",
# other params...
)
ai_msg = chat.invoke(messages)

AI 过滤器

AI 过滤器会检测在 Playground 中创建的测试应用(或包括的服务应用)中不恰当的输出(例如亵渎性语言),并通知用户。有关详细信息,请参阅此处

chat = ChatClovaX(
model="HCX-003",
include_ai_filters=True, # True if you want to enable ai filter
# other params...
)

ai_msg = chat.invoke(messages)
print(ai_msg.response_metadata["ai_filter"])

API 参考

有关所有 ChatNaver 功能和配置的详细文档,请访问 API 参考:https://python.langchain.ac.cn/api_reference/community/chat_models/langchain_community.chat_models.naver.ChatClovaX.html


此页面是否对您有帮助?