foundation model 의 추론 프로그래밍 방식( Python )
Python 라이브러리를 사용하여 IBM watsonx.ai 에서 프로그래밍 방식으로 기초 모델을 프롬프트할 수 있습니다.
Prompt Lab 에서 프롬프트를 생성한 후, 프롬프트를 노트북으로 저장한 다음, 노트북을 편집할 수 있습니다. 생성된 노트북을 시작하면 자격 증명과 프로젝트 ID를 얻는 등 초기 설정 단계를 처리해 주기 때문에 유용합니다.
또는, watsonx.ai 에서 직접 만든 새로운 노트북에서 기초 모델을 직접 사용할 수 있습니다.
더 자세한 정보는 watsonx.ai Python 라이브러리의 Model Inference 클래스를 참고하세요.
샘플 노트북
watsonx.ai에서 사용 가능한 다양한 기초 모델을 프롬프트하는 샘플 노트북을 찾으려면 Python 샘플 노트북을 참조하십시오. 이러한 노트북의 대부분은 자원 허브에서도 사용 가능합니다.
예를 들어, ' ' watsonx '을 사용하여 렌터카 리뷰 분석하기 '은 ' watsonx.ai'에서 ' foundation model '를 추론하는 단계를 학습하기 위해 실행할 수 있는 샘플 노트북입니다.
foundation model 프롬프트
foundation model 묻기 전에 watsonx.ai 추론에 사용할 수 있는 기초 모델 목록을 가져옵니다. 자세한 정보는 사용 가능한 기초 모델에 대한 정보 가져오기를 참조하십시오.
다음 샘플 코드는 각 메소드에서 생성되는 출력 유형을 비교할 수 있도록 다른 메소드를 사용하여 flan-t5-xxl-11b
모델을 프롬프트하는 방법을 보여줍니다.
텍스트 스트림을 생성하는 방법을 보여주는 예제에만 프롬프트를 위한 모델 매개변수가 포함되어 있지만 모든 메소드에 대해 매개변수를 지정할 수 있습니다. validate=False
매개변수는 모델 ID가 유효한지 확인하고 사용 가능한 foundation model 를 참조하는 단계를 건너뛰어 요청 속도를 높입니다.
foundation model 프롬프트용 Python 코드 샘플
import json
from ibm_watsonx_ai import APIClient
from ibm_watsonx_ai.foundation_models import ModelInference
from ibm_watsonx_ai.metanames import GenTextParamsMetaNames as GenParams
from ibm_watsonx_ai.foundation_models.utils.enums import DecodingMethods
my_credentials = {
"url": "https://{region}.ml.cloud.ibm.com",
"apikey": {my-IBM-Cloud-API-key},
}
client = APIClient(my_credentials)
gen_parms = {
GenParams.DECODING_METHOD: DecodingMethods.SAMPLE,
GenParams.MAX_NEW_TOKENS: 100
}
model_id = client.foundation_models.TextModels.FLAN_T5_XXL
project_id = {my-project-ID}
space_id = None
verify = False
model = ModelInference(
model_id=model_id,
credentials=my_credentials,
params=gen_parms,
project_id=project_id,
space_id=space_id,
verify=verify,
)
prompt_txt = "In today's sales meeting, we "
gen_parms_override = gen_parms = {
GenParams.DECODING_METHOD: DecodingMethods.SAMPLE,
GenParams.MAX_NEW_TOKENS: 50
}
# GENERATE
generated_response = model.generate(prompt=prompt_txt, params=gen_parms_override)
print("Output from generate() method:")
print(json.dumps(generated_response, indent=2))
# GENERATE TEXT
generated_text_response = model.generate_text(prompt=prompt_txt, params=gen_parms_override)
print("Output from generate_text() method:")
print(generated_text_response)
# GENERATE STREAM
gen_stream_params = {
GenParams.DECODING_METHOD: DecodingMethods.GREEDY,
GenParams.TEMPERATURE: 0.5,
GenParams.MIN_NEW_TOKENS: 10,
GenParams.MAX_NEW_TOKENS: 20
}
print("Output from generate_text_stream() method:")
stream_response = model.generate_text_stream(prompt=prompt_txt, params=gen_stream_params)
for chunk in stream_response:
print(chunk, end='')
샘플 코드를 사용하려면 {region}
, {my-IBM-Cloud-API-key}
및 {my-project-ID}
를 사용자 환경에 올바른 값으로 대체해야 합니다.
generate () 메소드의 출력:
{
"model_id": "google/flan-t5-xxl",
"created_at": "2023-07-27T03:40:17.575Z",
"results": [
{
"generated_text": "will discuss the new product line.",
"generated_token_count": 8,
"input_token_count": 10,
"stop_reason": "EOS_TOKEN"
}
],
...
}
generate_text () 메소드의 출력:
will discuss the new product line.
generate_text_stream () 메소드의 출력:
will discuss the new product line. Let's start with marketing plans
유해한 컨텐츠 제거
foundation model 프롬프트를 제출하면 기본적으로 혐오, 욕설 및 비속어(HAP) 필터와 개인 식별 정보(PII) 필터가 비활성화됩니다. 이를 사용으로 설정하고 API의 modifications
필드를 사용하여 HAP 필터의 민감도를 지정할 수 있습니다.
필터 작동 방법에 대한 자세한 정보는 모델 입력 및 출력에서 유해한 언어 제거를 참조하십시오.
Python 라이브러리를 사용할 때 기본 설정이 적용된 필터를 사용으로 설정하려면 요청에 다음 매개변수를 포함하십시오.
response = model.generate(prompt,guardrails=True)
다음 코드 예제는 필터를 사용으로 설정하고 구성하는 방법을 보여줍니다.
guardrails_hap_params = {
GenTextModerationsMetaNames.INPUT: False,
GenTextModerationsMetaNames.THRESHOLD: 0.45
}
guardrails_pii_params = {
GenTextModerationsMetaNames.INPUT: False,
GenTextModerationsMetaNames.OUTPUT: True,
GenTextModerationsMetaNames.MASK: {"remove_entity_value": True}
}
response = model.generate(prompt,
guardrails=True,
guardrails_hap_params=guardrails_hap_params,
guardrails_pii_params=guardrails_pii_params)
상위 주제: Python 라이브러리