프롬프트 템플릿을 사용하여 프로그래밍 방식으로 foundation model 추론하기
저장된 프롬프트 템플리트를 사용하여 IBM watsonx.ai 에서 프로그래밍 방식으로 기초 모델을 프롬프트할 수 있습니다.
프롬프트 템플리트는 사용자가 재사용할 수 있도록 특정 모델에서 원하는 결과를 생성하는 프롬프트 정적 텍스트, 모델 매개변수 및 프롬프트 변수의 조합을 캡처하기 위해 작성할 수 있는 자산입니다.
프롬프트 변수에 대한 자세한 정보는 재사용 가능한 프롬프트 빌드를 참조하십시오.
다음 방법으로 프롬프트 템플리트를 사용할 수 있습니다.
- 배포된 프롬프트 템플릿을 사용하여 foundation model 추론합니다.
- 프롬프트 템플리트를 배치한 후 추론 요청에서 배치된 템플리트를 사용하십시오.
- 프롬프트 템플릿을 기반으로 프롬프트에 텍스트를 추가한 다음 프롬프트 템플릿을 배포하지 않고 foundation model 추론합니다.
watsonx.ai 의 노트북에서 watsonx.ai Python 라이브러리에서 사용 가능한 함수를 사용하여 프롬프트 템플리트로 프롬프트를 제출하십시오.
샘플 노트북Copy link to section
따라야 할 단계에 대한 자세한 내용은 ' 샘플 노트북: ' watsonx '을 사용하여 프롬프트 템플릿 자산을 관리하고 배포를 만듭니다 을 참조하세요.
배포된 프롬프트 템플릿으로 foundation model 추론하기Copy link to section
배포된 foundation model 추론 요청을 보내려면 다음 단계를 수행합니다:
APIClient를 구성하십시오. 배치된 프롬프트 템플리트를 추론할 때 프롬프트 템플리트가 호스트되는 배치의 배치 영역을 지정해야 합니다.
from ibm_watsonx_ai import APIClient, Credentials from ibm_watsonx_ai.metanames import GenTextParamsMetaNames credentials=Credentials( url=<URL>, api_key=<API-KEY>, ) client = APIClient(credentials) client.set.default_space(space_id)
Copy to clipboard 배치된 템플리트에 추론 요청을 제출하십시오.
이 예제에서는
메소드가 사용되고generate_text
프롬프트 변수 값이 지정됩니다.question
generated_response = client.deployments.generate_text( deployment_id={deployment-id}, params={ GenTextParamsMetaNames.PROMPT_VARIABLES: { "question": "What plans do you offer?" } } )
Copy to clipboard
프롬프트 템플리트 배치 및 추론Copy link to section
Python 라이브러리를 사용하여 프롬프트 템플릿을 배포한 다음 배포된 프롬프트 템플릿을 사용하여 foundation model 추론할 수 있습니다. 다음 상위 레벨 단계가 포함됩니다. 전체 단계 및 추가 옵션은 샘플 노트북을 참조하십시오.
PromptTemplateManager 객체를 가져와 인스턴스화합니다.
prompt_mgr = PromptTemplateManager( credentials=Credentials( api_key=<API-KEY>, url=<URL> ), space_id=<SPACE_ID> )
Copy to clipboard 프롬프트 템플릿을 정의합니다.
from ibm_watsonx_ai import APIClient from ibm_watsonx_ai.foundation_models.prompts import PromptTemplate from ibm_watsonx_ai.foundation_models.utils.enums import DecodingMethods from ibm_watsonx_ai.metanames import GenTextParamsMetaNames as GenParams my_credentials = { "url": "https://{region}.ml.cloud.ibm.com", "apikey": {my-IBM-Cloud-API-key}, } client = APIClient(my_credentials) prompt_template = PromptTemplate( name="New prompt", model_id=client.foundation_models.TextModels.FLAN_T5_XXL, model_params = {GenParams.DECODING_METHOD: DecodingMethods.SAMPLE}, description="My example", task_ids=["generation"], input_variables=["object"], instruction="Answer the following question", input_prefix="Human", output_prefix="Assistant", input_text="What is {object} and how does it work?", examples=[ ["What is a loan and how does it work?", "A loan is a debt that is repaid with interest over time."] ] )
Copy to clipboard Show more 프롬프트 템플릿을 프로젝트에 저장하여 프롬프트 템플릿 ID를 생성합니다.
stored_prompt_template = prompt_mgr.store_prompt(prompt_template=prompt_template) print(f"Asset id: {stored_prompt_template.prompt_id}")
Copy to clipboard 프롬프트 템플리트에서 텍스트를 로드하십시오.
from ibm_watsonx_ai.foundation_models.utils.enums import PromptTemplateFormats prompt_input_text = prompt_mgr.load_prompt( prompt_id=stored_prompt_template.prompt_id, astype=PromptTemplateFormats.STRING) print(prompt_input_text)
Copy to clipboard 프롬프트 템플리트 배치를 작성하고 배치 ID를 생성하십시오.
meta_props = { client.deployments.ConfigurationMetaNames.NAME: "SAMPLE DEPLOYMENT PROMPT TEMPLATE", client.deployments.ConfigurationMetaNames.ONLINE: {}, client.deployments.ConfigurationMetaNames.BASE_MODEL_ID: "ibm/granite-13b-chat-v2" } deployment_details = client.deployments.create( artifact_id=stored_prompt_template.prompt_id, meta_props=meta_props )
Copy to clipboard 배포된 프롬프트 템플릿을 사용하여 foundation model 추론하는 데 사용할 ModelInference 개체를 가져와서 인스턴스화합니다.
from ibm_watsonx_ai.foundation_models import ModelInference deployment_id = deployment_details.get("metadata", {}).get("id") model_inference = ModelInference( deployment_id=deployment_id, api_client=client )
Copy to clipboard foundation model 추론합니다. 프롬프트 템플리트에 정의된 프롬프트 변수의 값을 지정해야 합니다.
from ibm_watsonx_ai.foundation_models.utils.enums import DecodingMethods model_inference.generate_text( params={ "prompt_variables": {"object": "a mortgage"}, GenParams.DECODING_METHOD: DecodingMethods.GREEDY, GenParams.STOP_SEQUENCES: ['\n\n'], GenParams.MAX_NEW_TOKENS: 50 } )
Copy to clipboard
프롬프트 템플리트를 사용하여 추론 요청에 대한 프롬프트 텍스트 초안 작성Copy link to section
배포되지 않은 프롬프트 템플릿을 사용하여 foundation model 추론하려면 다음 단계를 수행합니다. 전체 단계 및 추가 옵션은 샘플 노트북을 참조하십시오.
사용 가능한 모든 프롬프트 템플리트를 나열합니다.
자세한 내용은 모든 프롬프트 템플릿 목록을 참조하세요.
사용할 프롬프트 템플리트를 로드하십시오. 프롬프트 템플리트를 배치할 필요가 없습니다. 템플리트를 프롬프트 텍스트로 변환하십시오.
자세한 내용은 로드 프롬프트를 참조하세요.
prompt_text = prompt_mgr.load_prompt(prompt_id=stored_prompt_template.prompt_id, astype=PromptTemplateFormats.STRING) print(prompt_text)
Copy to clipboard 프롬프트 변수를 사용할 값으로 대체하십시오.
filled_prompt_text = prompt_text.format(object='credit card')
Copy to clipboard 채워진 프롬프트 텍스트를 foundation model 보내 추론할 수 있도록 합니다.
generated_response = model.generate_text(prompt=filled_prompt_input, ...)
Copy to clipboard
상위 주제: Python 라이브러리