기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
CohereCommand R및 Command R+ 모델
InvokeModel또는 InvokeModelWithResponseStream (스트리밍) 을 사용하여 Cohere Command R 및 Cohere Command R+ 모델에 추론 요청을 합니다. 사용하려는 모델의 모델 ID가 필요합니다. 모델 ID를 가져오려면 을 참조하십시오아마존 베드락 모델 IDs.
대화형 애플리케이션의 경우 Converse API를 사용하는 것이 좋습니다. Converse API는 메시지를 지원하는 모든 모델에서 작동하는 통합된 매개변수 세트를 제공합니다. 자세한 정보는 컨버스 사용 API을 참조하세요.
요청 및 응답
- Request
-
CohereCommand모델에는 다음과 같은 추론 파라미터가 있습니다.
{
"message": string,
"chat_history": [
{
"role":"USER or CHATBOT
",
"message": string
}
],
"documents": [
{"title": string, "snippet": string},
],
"search_queries_only" : boolean,
"preamble" : string,
"max_tokens": int,
"temperature": float,
"p": float,
"k": float,
"prompt_truncation" : string,
"frequency_penalty" : float,
"presence_penalty" : float,
"seed" : int,
"return_prompt" : boolean,
"tools" : [
{
"name": string,
"description": string,
"parameter_definitions": {
"parameter name
": {
"description": string,
"type": string,
"required": boolean
}
}
}
],
"tool_results" : [
{
"call": {
"name": string,
"parameters": {
"parameter name
": string
}
},
"outputs": [
{
"text
": string
}
]
}
],
"stop_sequences": [string],
"raw_prompting" : boolean
}
다음은 필수 파라미터입니다.
다음 파라미터는 선택 사항입니다.
-
chat_history — 사용자와 모델 간에 주고받은 이전 메시지 목록으로, 사용자 메시지에 응답하기 위한 대화형 컨텍스트를 모델에 제공하기 위한 것입니다.
다음은 필수 필드입니다.
다음은 해당 필드의 JSON의 chat_history
예시입니다.
"chat_history": [
{"role": "USER", "message": "Who discovered gravity?"},
{"role": "CHATBOT", "message": "The man who is widely credited with discovering gravity is Sir Isaac Newton"}
]
-
문서 — 모델이 더 정확한 답변을 생성하기 위해 인용할 수 있는 텍스트 목록입니다. 각 문서는 문자열 사전입니다. 결과 생성에는 이러한 문서 중 일부를 참조하는 인용이 포함됩니다. 사전에 있는 문자열의 총 단어 수는 300단어 미만으로 유지하는 것이 좋습니다. 일부 키-값 쌍이 모델에 표시되지 않도록 _excludes
필드 (문자열 배열) 를 선택적으로 제공할 수 있습니다. 자세한 내용은 설명서의 문서 모드 안내서를 참조하십시오. Cohere
다음은 해당 documents
필드의 JSON 예제입니다.
"documents": [
{"title": "Tall penguins", "snippet": "Emperor penguins are the tallest."},
{"title": "Penguin habitats", "snippet": "Emperor penguins only live in Antarctica."}
]
-
검색_쿼리_전용 — 기본값은 입니다. false
이 true
경우 응답에 생성된 검색 쿼리 목록만 포함되고 검색은 수행되지 않으며 모델에서 사용자의 응답에 대한 응답도 생성되지 않습니다. message
-
프리앰블 — 검색 쿼리 생성을 위한 기본 프리앰블을 재정의합니다. 도구 사용 세대에 영향을 주지 않습니다.
-
max_token — 모델이 응답의 일부로 생성해야 하는 최대 토큰 수입니다. 값을 낮게 설정하면 생성이 완료되지 않을 수 있다는 점에 유의하세요. 또는 필드와 함께 사용할 경우 설정이 불완전하거나 생성되지 max_tokens
않을 tools
수 documents
있습니다.
-
온도 - 낮은 값을 사용하면 반응의 임의성을 줄일 수 있습니다. 파라미터 값을 높이면 임의성을 더욱 극대화할 수 있습니다. p
-
p — 상위 P. 가능성이 낮은 옵션을 무시하려면 낮은 값을 사용하십시오.
기본값 |
최소 |
Maximum |
0.75
|
0.01
|
0.99
|
-
k — 상위 K. 모델이 다음 토큰을 생성할 때 사용하는 토큰 선택 개수를 지정합니다.
-
prompt t_truncation — 기본값은 입니다. OFF
프롬프트의 구성 방법을 지정합니다. 로 prompt_truncation
설정하면 모델의 컨텍스트 길이 제한에 맞는 프롬프트를 생성하기 위해 chat_history
및 documents
의 일부 요소가 삭제됩니다. AUTO_PRESERVE_ORDER
이 과정에서 문서 순서와 채팅 기록이 보존됩니다. prompt_truncation
`로 OFF
설정하면 요소가 삭제되지 않습니다.
-
주파수_페널티 — 생성된 토큰의 반복성을 줄이는 데 사용됩니다. 값이 높을수록 이전에 제시한 토큰에 더 강한 페널티가 적용되며, 이는 프롬프트 또는 이전 세대에 이미 나타난 횟수에 비례합니다.
-
presence_penalties — 생성된 토큰의 반복성을 줄이는 데 사용됩니다. 이 페널티가 정확한 빈도와 상관없이 이미 등장한 모든 토큰에 동일하게 적용된다는 점을 제외하면 비슷합니다. frequency_penalty
-
시드 — 지정된 경우 백엔드는 결정론적으로 토큰을 샘플링하기 위해 최선을 다합니다. 즉, 동일한 시드와 파라미터를 사용한 반복 요청에서도 동일한 결과가 반환되도록 백엔드가 최선을 다합니다. 하지만 결정론을 완전히 보장할 수는 없습니다.
-
return_prompt — 모델로 전송된 전체 프롬프트를 true
반환하도록 지정합니다. 기본 값은 false
입니다. 응답에서는 필드에 프롬프트가 표시됩니다. prompt
-
도구 — 모델이 텍스트 응답을 생성하기 전에 호출을 제안할 수 있는 사용 가능한 도구 (함수) 목록입니다. tools
가 전달되면 (없이tool_results
) 응답의 필드가 입력되고 ""
응답의 tool_calls
필드에는 필요한 도구 호출 목록이 채워집니다. text
호출할 필요가 없는 경우 tool_calls
배열은 비어 있게 됩니다.
자세한 내용은 Cohere 설명서의 도구 사용을 참조하십시오.
다음은 해당 필드의 JSON 예제입니다. tools
[
{
"name": "top_song",
"description": "Get the most popular song played on a radio station.",
"parameter_definitions": {
"sign": {
"description": "The call sign for the radio station for which you want the most popular song. Example calls signs are WZPZ and WKRP.",
"type": "str",
"required": true
}
}
}
]
자세한 내용은 설명서의 1단계 도구 사용 (함수 호출) 을 Cohere 참조하십시오.
-
tools_results — 이전 채팅 턴에서 모델이 추천한 도구를 호출한 결과 목록입니다. 결과는 텍스트 응답을 생성하는 데 사용되며 인용에 참조됩니다. 사용할 tool_results
때는 tools
반드시 전달해야 합니다. 각 tool_result
파일에는 호출 방법에 대한 정보와 사전 형식의 출력 목록이 들어 있습니다. Cohere의 독특하고 세분화된 인용 논리를 사용하려면 출력이 목록이어야 합니다. 예를 들어 출력이 한 항목인 경우에도 목록 안에 래핑해야 합니다. {"status": 200}
자세한 내용은 Cohere 설명서의 도구 사용을 참조하십시오.
다음은 해당 tools_results
필드의 JSON 예제입니다.
[
{
"call": {
"name": "top_song",
"parameters": {
"sign": "WZPZ"
}
},
"outputs": [
{
"song": "Elemental Hotel"
}
]
}
]
-
stop_sequence — 중지 시퀀스 목록입니다. 중지 시퀀스가 감지되면 모델은 추가 토큰 생성을 중단합니다.
-
raw_prompt — 사전 처리 없이 사용자를 모델로 보내려면 지정하고true
, message
그렇지 않으면 false로 지정합니다.
- Response
-
응답에는 다음과 같은 필드가 포함될 수 있습니다.
{
"response_id": string,
"text": string,
"generation_id": string,
"citations": [
{
"start": int,
"end": int,
"text": "string",
"document_ids": [
"string"
]
}
],
"finish_reason": string,
"tool_calls": [
{
"name": string,
"parameters": {
"parameter name
": string
}
}
],
{
"meta": {
"api_version": {
"version": string
},
"billed_units": {
"input_tokens": int,
"output_tokens": int
}
}
}
-
response_id — 채팅 완료를 위한 고유 식별자
-
text — 채팅 메시지 입력에 대한 모델의 응답입니다.
-
generation_id — Cohere 플랫폼에서 피드백 엔드포인트와 함께 사용되는 채팅 완료를 위한 고유 식별자입니다.
-
인용 — 생성된 답변에 대한 인라인 인용 및 관련 메타데이터의 배열. 다음 필드를 포함합니다.
-
prompt — 모델에 전송된 전체 프롬프트입니다. 이 return_prompt
필드를 반환할 필드를 지정하십시오.
-
finish_reason — 모델이 출력 생성을 중단한 이유. 다음 중 하나일 수 있습니다.
-
완료 — 토큰 생성 종료에 도달했습니다. 이것이 최상의 성능을 발휘할 수 있는 완료 이유인지 확인하세요.
-
error_toxic — 콘텐츠 필터 때문에 생성을 완료할 수 없습니다.
-
error_limit — 모델의 컨텍스트 제한에 도달했기 때문에 생성을 완료할 수 없습니다.
-
오류 — 오류로 인해 생성을 완료할 수 없습니다.
-
user_cancel — 사용자가 생성을 중지했기 때문에 생성을 완료할 수 없습니다.
-
max_token — 사용자가 요청에 max_tokens
제한을 지정했는데 이 한도에 도달했기 때문에 생성을 완료할 수 없습니다. 성능이 최상으로 나오지 않을 수 있습니다.
-
tool_calls — 호출에 적합한 도구 목록입니다. tools
입력 필드를 지정한 경우에만 반환됩니다.
자세한 내용은 Cohere 설명서의 도구 사용을 참조하십시오.
다음은 해당 필드의 JSON 예제입니다. tool_calls
[
{
"name": "top_song",
"parameters": {
"sign": "WZPZ"
}
}
]
-
메타 — API 사용 데이터 (스트리밍용으로만 존재).
코드 예제
이 예제는 CohereCommand R모델을 호출하는 방법을 보여줍니다.
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
"""
Shows how to use the Cohere Command R model.
"""
import json
import logging
import boto3
from botocore.exceptions import ClientError
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)
def generate_text(model_id, body):
"""
Generate text using a Cohere Command R model.
Args:
model_id (str): The model ID to use.
body (str) : The reqest body to use.
Returns:
dict: The response from the model.
"""
logger.info("Generating text with Cohere model %s", model_id)
bedrock = boto3.client(service_name='bedrock-runtime')
response = bedrock.invoke_model(
body=body,
modelId=model_id
)
logger.info(
"Successfully generated text with Cohere Command R model %s", model_id)
return response
def main():
"""
Entrypoint for Cohere example.
"""
logging.basicConfig(level=logging.INFO,
format="%(levelname)s: %(message)s")
model_id = 'cohere.command-r-v1:0'
chat_history = [
{"role": "USER", "message": "What is an interesting new role in AI if I don't have an ML background?"},
{"role": "CHATBOT", "message": "You could explore being a prompt engineer!"}
]
message = "What are some skills I should have?"
try:
body = json.dumps({
"message": message,
"chat_history": chat_history,
"max_tokens": 2000,
"temperature": 0.6,
"p": 0.5,
"k": 250
})
response = generate_text(model_id=model_id,
body=body)
response_body = json.loads(response.get('body').read())
response_chat_history = response_body.get('chat_history')
print('Chat history\n------------')
for response_message in response_chat_history:
if 'message' in response_message:
print(f"Role: {response_message['role']}")
print(f"Message: {response_message['message']}\n")
print("Generated text\n--------------")
print(f"Stop reason: {response_body['finish_reason']}")
print(f"Response text: \n{response_body['text']}")
except ClientError as err:
message = err.response["Error"]["Message"]
logger.error("A client error occurred: %s", message)
print("A client error occured: " +
format(message))
else:
print(f"Finished generating text with Cohere model {model_id}.")
if __name__ == "__main__":
main()