Skip to main content
Open In ColabOpen on GitHub

ChatClovaX

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

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

概览

集成详情

本地可序列化的JS 支持软件包下载最新包裹
ChatClovaXlangchain-naverPyPI - DownloadsPyPI - Version

模型特性

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

设置

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

  1. 创建 NAVER Cloud Platform 账户
  2. 申请使用 CLOVA Studio
  3. 创建一个要使用的CLOVA Studio测试应用或服务应用模型(参见此处。)
  4. 发出测试或服务API密钥(参见此处。)

凭据

使用您的API密钥设置CLOVASTUDIO_API_KEY环境变量。

你可以按照以下方式将它们添加到你的环境变量中:

export CLOVASTUDIO_API_KEY="your-api-key-here"
import getpass
import os

if not os.getenv("CLOVASTUDIO_API_KEY"):
os.environ["CLOVASTUDIO_API_KEY"] = getpass.getpass(
"Enter your CLOVA Studio API Key: "
)

要启用模型调用的自动跟踪,请设置您的 LangSmith API 密钥:

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

安装

LangChain Naver 集成位于 langchain-naver 包中:

# install package
%pip install -qU langchain-naver

实例化

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

from langchain_naver import ChatClovaX

chat = ChatClovaX(
model="HCX-005",
temperature=0.5,
max_tokens=None,
timeout=None,
max_retries=2,
# other params...
)

调用

除了调用之外,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='네이버 인공지능을 사용하는 것을 정말 좋아합니다.', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 11, 'prompt_tokens': 28, 'total_tokens': 39, 'completion_tokens_details': None, 'prompt_tokens_details': None}, 'model_name': 'HCX-005', 'system_fingerprint': None, 'id': 'b70c26671cd247a0864115bacfb5fc12', 'finish_reason': 'stop', 'logprobs': None}, id='run-3faf6a8d-d5da-49ad-9fbb-7b56ed23b484-0', usage_metadata={'input_tokens': 28, 'output_tokens': 11, 'total_tokens': 39, 'input_token_details': {}, 'output_token_details': {}})
print(ai_msg.content)
네이버 인공지능을 사용하는 것을 정말 좋아합니다.

链式调用

我们可以像这样将我们的模型与提示模板链接

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='저는 네이버 인공지능을 사용하는 것을 좋아합니다.', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 10, 'prompt_tokens': 28, 'total_tokens': 38, 'completion_tokens_details': None, 'prompt_tokens_details': None}, 'model_name': 'HCX-005', 'system_fingerprint': None, 'id': 'b7a826d17fcf4fee8386fca2ebc63284', 'finish_reason': 'stop', 'logprobs': None}, id='run-35957816-3325-4d9c-9441-e40704912be6-0', usage_metadata={'input_tokens': 28, 'output_tokens': 10, 'total_tokens': 38, 'input_token_details': {}, 'output_token_details': {}})

流式传输

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)
In Korean, the informal way of saying 'hi' is "안녕" (annyeong). If you're addressing someone older or showing more respect, you would use "안녕하세요" (annjeonghaseyo). Both phrases are used as greetings similar to 'hello'. Remember, pronunciation is key so make sure to pronounce each syllable clearly: 안-녀-엉 (an-nyeo-eong) and 안-녕-하-세-요 (an-nyeong-ha-se-yo).

附加功能

使用微调模型

您可以通过将 task_id 传递给 model 参数来调用微调模型,如下所示: ft:{task_id}

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

fine_tuned_model = ChatClovaX(
model="ft:a1b2c3d4", # set as `ft:{task_id}` with your fine-tuned model's task id
# other params...
)

fine_tuned_model.invoke(messages)
AIMessage(content='네이버 인공지능을 사용하는 것을 정말 좋아합니다.', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 11, 'prompt_tokens': 28, 'total_tokens': 39, 'completion_tokens_details': None, 'prompt_tokens_details': None}, 'model_name': 'HCX-005', 'system_fingerprint': None, 'id': '2222d6d411a948c883aac1e03ca6cebe', 'finish_reason': 'stop', 'logprobs': None}, id='run-9696d7e2-7afa-4bb4-9c03-b95fcf678ab8-0', usage_metadata={'input_tokens': 28, 'output_tokens': 11, 'total_tokens': 39, 'input_token_details': {}, 'output_token_details': {}})

API 参考

有关ChatClovaX所有功能和配置的详细文档,请访问API参考