영어 버전 문서로 돌아가기

프롬프트 템플릿을 사용하여 프로그래밍 방식으로 foundation model 추론하기

마지막 업데이트 날짜: 2024년 11월 28일
프롬프트 템플릿을 사용하여 프로그래밍 방식으로 foundation model 추론하기

저장된 프롬프트 템플리트를 사용하여 IBM watsonx.ai 에서 프로그래밍 방식으로 기초 모델을 프롬프트할 수 있습니다.

프롬프트 템플리트는 사용자가 재사용할 수 있도록 특정 모델에서 원하는 결과를 생성하는 프롬프트 정적 텍스트, 모델 매개변수 및 프롬프트 변수의 조합을 캡처하기 위해 작성할 수 있는 자산입니다.

프롬프트 변수에 대한 자세한 정보는 재사용 가능한 프롬프트 빌드를 참조하십시오.

다음 방법으로 프롬프트 템플리트를 사용할 수 있습니다.

  • 배포된 프롬프트 템플릿을 사용하여 foundation model 추론합니다.
  • 프롬프트 템플리트를 배치한 후 추론 요청에서 배치된 템플리트를 사용하십시오.
  • 프롬프트 템플릿을 기반으로 프롬프트에 텍스트를 추가한 다음 프롬프트 템플릿을 배포하지 않고 foundation model 추론합니다.

watsonx.ai 의 노트북에서 watsonx.ai Python 라이브러리에서 사용 가능한 함수를 사용하여 프롬프트 템플리트로 프롬프트를 제출하십시오.

샘플 노트북

따라야 할 단계에 대한 자세한 내용은 ' 샘플 노트북: ' watsonx '을 사용하여 프롬프트 템플릿 자산을 관리하고 배포를 만듭니다 을 참조하세요.

배포된 프롬프트 템플릿으로 foundation model 추론하기

배포된 foundation model 추론 요청을 보내려면 다음 단계를 수행합니다:

  1. 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)
    
  2. 배치된 템플리트에 추론 요청을 제출하십시오.

    이 예제에서는 generate_text 메소드가 사용되고 question 프롬프트 변수 값이 지정됩니다.

    
    generated_response = client.deployments.generate_text(
      deployment_id={deployment-id},
      params={
         GenTextParamsMetaNames.PROMPT_VARIABLES: {
             "question": "What plans do you offer?"
         }
      }
      )
    

프롬프트 템플리트 배치 및 추론

Python 라이브러리를 사용하여 프롬프트 템플릿을 배포한 다음 배포된 프롬프트 템플릿을 사용하여 foundation model 추론할 수 있습니다. 다음 상위 레벨 단계가 포함됩니다. 전체 단계 및 추가 옵션은 샘플 노트북을 참조하십시오.

  1. PromptTemplateManager 객체를 가져와 인스턴스화합니다.

    prompt_mgr = PromptTemplateManager(
      credentials=Credentials(
        api_key=<API-KEY>,
        url=<URL>
      ),
      space_id=<SPACE_ID>
    )
    
  2. 프롬프트 템플릿을 정의합니다.

    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."]
      ]
    )   
    
  3. 프롬프트 템플릿을 프로젝트에 저장하여 프롬프트 템플릿 ID를 생성합니다.

    stored_prompt_template = prompt_mgr.store_prompt(prompt_template=prompt_template)
    print(f"Asset id: {stored_prompt_template.prompt_id}")
    
  4. 프롬프트 템플리트에서 텍스트를 로드하십시오.

    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)
    
  5. 프롬프트 템플리트 배치를 작성하고 배치 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
    )
    
  6. 배포된 프롬프트 템플릿을 사용하여 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
    )
    
  7. 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
      }
    )
    

 

프롬프트 템플리트를 사용하여 추론 요청에 대한 프롬프트 텍스트 초안 작성

배포되지 않은 프롬프트 템플릿을 사용하여 foundation model 추론하려면 다음 단계를 수행합니다. 전체 단계 및 추가 옵션은 샘플 노트북을 참조하십시오.

  1. 사용 가능한 모든 프롬프트 템플리트를 나열합니다.

    자세한 내용은 모든 프롬프트 템플릿 목록을 참조하세요.

  2. 사용할 프롬프트 템플리트를 로드하십시오. 프롬프트 템플리트를 배치할 필요가 없습니다. 템플리트를 프롬프트 텍스트로 변환하십시오.

    자세한 내용은 로드 프롬프트를 참조하세요.

    prompt_text = prompt_mgr.load_prompt(prompt_id=stored_prompt_template.prompt_id, astype=PromptTemplateFormats.STRING)
    print(prompt_text)
    
  3. 프롬프트 변수를 사용할 값으로 대체하십시오.

    filled_prompt_text = prompt_text.format(object='credit card')
    
  4. 채워진 프롬프트 텍스트를 foundation model 보내 추론할 수 있도록 합니다.

    generated_response = model.generate_text(prompt=filled_prompt_input, ...)
    

상위 주제: Python 라이브러리