ChatClovaX
本笔记提供了 Naver HyperCLOVA X 聊天模型 通过 CLOVA Studio 的快速入门概述。有关 ChatClovaX 所有功能和配置的详细文档,请查阅 API 参考。
CLOVA Studio 有多种聊天模型。您可以在 CLOVA Studio 指南的文档中找到有关最新模型及其成本、上下文窗口和支持的输入类型的信息。
概述
集成详情
类别 | 包 | 本地 | 可序列化 | JS 支持 | 包下载量 | 最新包版本 |
---|---|---|---|---|---|---|
ChatClovaX | langchain-naver | ❌ | ❌ | ❌ |
模型特性
工具调用 | 结构化输出 | JSON 模式 | 图片输入 | 音频输入 | 视频输入 | 逐令牌流式传输 | 原生异步 | 令牌使用量 | 对数概率 |
---|---|---|---|---|---|---|---|---|---|
✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ |
设置
在使用聊天模型之前,您必须完成以下四个步骤。
- 创建 NAVER Cloud Platform 账户
- 申请使用 CLOVA Studio
- 创建用于模型的 CLOVA Studio 测试应用程序或服务应用程序(详见此处。)
- 颁发测试或服务 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...
)
调用
除了调用(invoke),ChatClovaX
还支持批量(batch)和流式(stream)功能。
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
作为 ft:{task_id}
传递给 model
参数来调用微调模型。
您可以从相应的测试应用程序或服务应用程序详细信息中查看 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 参考