amazon personalize langchain extensions
1.0.0
此儲存庫提供了一組與 Langchain 一起使用的實用程式類別。目前,它有一個實用程式類別AmazonPersonalize
,用於與 Amazon Personalize 活動/推薦程式配合使用,並且AmazonPersonalizeChain
自訂鏈建立可從 Amazon Personalize 檢索推薦並執行預設提示(可由使用者覆蓋)。
克隆儲存庫
git clone https://github.com/aws-samples/amazon-personalize-langchain-extensions.git
移動到 repo 目錄
cd amazon-personalize-langchain-extensions
安裝類
pip install .
from aws_langchain import AmazonPersonalize
recommender_arn = "<insert_arn>"
client = AmazonPersonalize ( credentials_profile_name = "default" , region_name = "us-west-2" , recommender_arn = recommender_arn )
client . get_recommendations ( user_id = "1" )
from aws_langchain import AmazonPersonalize
from aws_langchain import AmazonPersonalizeChain
from langchain . llms . bedrock import Bedrock
recommender_arn = "<insert_arn>"
bedrock_llm = Bedrock ( model_id = "anthropic.claude-v2" , region_name = "us-west-2" )
client = AmazonPersonalize ( credentials_profile_name = "default" , region_name = "us-west-2" , recommender_arn = recommender_arn )
# Create personalize chain
# Use return_direct=True if you do not want summary
chain = AmazonPersonalizeChain . from_llm (
llm = bedrock_llm ,
client = client ,
return_direct = False
)
response = chain ({ 'user_id' : '1' })
print ( response )
from langchain . prompts . prompt import PromptTemplate
from aws_langchain import AmazonPersonalize
from aws_langchain import AmazonPersonalizeChain
from langchain . llms . bedrock import Bedrock
RANDOM_PROMPT_QUERY = """
You are a skilled publicist. Write a high-converting marketing email advertising several movies available in a video-on-demand streaming platform next week,
given the movie and user information below. Your email will leverage the power of storytelling and persuasive language.
The movies to recommend and their information is contained in the <movie> tag.
All movies in the <movie> tag must be recommended. Give a summary of the movies and why the human should watch them.
Put the email between <email> tags.
<movie>
{result}
</movie>
Assistant:
"""
RANDOM_PROMPT = PromptTemplate ( input_variables = [ "result" ], template = RANDOM_PROMPT_QUERY )
recommender_arn = "<insert_arn>"
bedrock_llm = Bedrock ( model_id = "anthropic.claude-v2" , region_name = "us-west-2" )
client = AmazonPersonalize ( credentials_profile_name = "default" , region_name = "us-west-2" , recommender_arn = recommender_arn )
chain = AmazonPersonalizeChain . from_llm ( llm = bedrock_llm , client = client , return_direct = False , prompt_template = RANDOM_PROMPT )
chain . run ({ 'user_id' : '1' , 'item_id' : '234' })
from langchain . chains import SequentialChain
from langchain . chains import LLMChain
from aws_langchain import AmazonPersonalize
from aws_langchain import AmazonPersonalizeChain
from langchain . llms . bedrock import Bedrock
from langchain . prompts . prompt import PromptTemplate
RANDOM_PROMPT_QUERY_2 = """
You are a skilled publicist. Write a high-converting marketing email advertising several movies available in a video-on-demand streaming platform next week,
given the movie and user information below. Your email will leverage the power of storytelling and persuasive language.
You want the email to impress the user, so make it appealing to them.
The movies to recommend and their information is contained in the <movie> tag.
All movies in the <movie> tag must be recommended. Give a summary of the movies and why the human should watch them.
Put the email between <email> tags.
<movie>
{result}
</movie>
Assistant:
"""
recommender_arn = "<insert_arn>"
bedrock_llm = Bedrock ( model_id = "anthropic.claude-v2" , region_name = "us-west-2" )
client = AmazonPersonalize ( credentials_profile_name = "default" , region_name = "us-west-2" , recommender_arn = recommender_arn )
RANDOM_PROMPT_2 = PromptTemplate ( input_variables = [ "result" ], template = RANDOM_PROMPT_QUERY_2 )
personalize_chain_instance = AmazonPersonalizeChain . from_llm ( llm = bedrock_llm , client = client , return_direct = True )
random_chain_instance = LLMChain ( llm = bedrock_llm , prompt = RANDOM_PROMPT_2 )
overall_chain = SequentialChain ( chains = [ personalize_chain_instance , random_chain_instance ], input_variables = [ "user_id" ], verbose = True )
overall_chain . run ({ 'user_id' : '1' , 'item_id' : '234' })
from aws_langchain import AmazonPersonalize
from aws_langchain import AmazonPersonalizeChain
from langchain . llms . bedrock import Bedrock
recommender_arn = "<insert_arn>"
metadata_column_list = [ "METADATA_COL1" ]
metadataMap = { "ITEMS" : metadata_column_list }
bedrock_llm = Bedrock ( model_id = "anthropic.claude-v2" , region_name = "us-west-2" )
client = AmazonPersonalize ( credentials_profile_name = "default" , region_name = "us-west-2" , recommender_arn = recommender_arn )
# Create personalize chain
# Use return_direct=True if you do not want summary
chain = AmazonPersonalizeChain . from_llm (
llm = bedrock_llm ,
client = client ,
return_direct = False
)
response = chain ({ 'user_id' : '1' , 'metadata_columns' : metadataMap })
print ( response )
pip uninstall aws-langchain
建立 GitHub 分支並發出拉取請求。請參閱貢獻以獲取更多資訊。
該庫根據 MIT-0 許可證獲得許可。請參閱許可證文件。