mirror of
https://github.com/langchain-ai/langchain.git
synced 2026-10-09 11:25:21 +03:00
23 KiB
23 KiB
In [ ]:
!pip install sagemaker
!pip install openai
!pip install google-search-resultsIn [ ]:
import os
## Add your API keys below
os.environ["OPENAI_API_KEY"] = "<ADD-KEY-HERE>"
os.environ["SERPAPI_API_KEY"] = "<ADD-KEY-HERE>"In [ ]:
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.agents import initialize_agent, load_tools
from langchain.agents import Tool
from langchain.callbacks import SageMakerCallbackHandler
from sagemaker.analytics import ExperimentAnalytics
from sagemaker.session import Session
from sagemaker.experiments.run import RunIn [ ]:
#LLM Hyperparameters
HPARAMS = {
"temperature": 0.1,
"model_name": "text-davinci-003",
}
#Bucket used to save prompt logs (Use `None` is used to save the default bucket or otherwise change it)
BUCKET_NAME = None
#Experiment name
EXPERIMENT_NAME = "langchain-sagemaker-tracker"
#Create SageMaker Session with the given bucket
session = Session(default_bucket=BUCKET_NAME)In [ ]:
RUN_NAME = "run-scenario-1"
PROMPT_TEMPLATE = "tell me a joke about {topic}"
INPUT_VARIABLES = {"topic": "fish"}In [ ]:
with Run(experiment_name=EXPERIMENT_NAME, run_name=RUN_NAME, sagemaker_session=session) as run:
# Create SageMaker Callback
sagemaker_callback = SageMakerCallbackHandler(run)
# Define LLM model with callback
llm = OpenAI(callbacks=[sagemaker_callback], **HPARAMS)
# Create prompt template
prompt = PromptTemplate.from_template(template=PROMPT_TEMPLATE)
# Create LLM Chain
chain = LLMChain(llm=llm, prompt=prompt, callbacks=[sagemaker_callback])
# Run chain
chain.run(**INPUT_VARIABLES)
# Reset the callback
sagemaker_callback.flush_tracker()In [ ]:
RUN_NAME = "run-scenario-2"
PROMPT_TEMPLATE_1 = """You are a playwright. Given the title of play, it is your job to write a synopsis for that title.
Title: {title}
Playwright: This is a synopsis for the above play:"""
PROMPT_TEMPLATE_2 = """You are a play critic from the New York Times. Given the synopsis of play, it is your job to write a review for that play.
Play Synopsis: {synopsis}
Review from a New York Times play critic of the above play:"""
INPUT_VARIABLES = {
"input": "documentary about good video games that push the boundary of game design"
}In [ ]:
with Run(experiment_name=EXPERIMENT_NAME, run_name=RUN_NAME, sagemaker_session=session) as run:
# Create SageMaker Callback
sagemaker_callback = SageMakerCallbackHandler(run)
# Create prompt templates for the chain
prompt_template1 = PromptTemplate.from_template(template=PROMPT_TEMPLATE_1)
prompt_template2 = PromptTemplate.from_template(template=PROMPT_TEMPLATE_2)
# Define LLM model with callback
llm = OpenAI(callbacks=[sagemaker_callback], **HPARAMS)
# Create chain1
chain1 = LLMChain(llm=llm, prompt=prompt_template1, callbacks=[sagemaker_callback])
# Create chain2
chain2 = LLMChain(llm=llm, prompt=prompt_template2, callbacks=[sagemaker_callback])
# Create Sequential chain
overall_chain = SimpleSequentialChain(chains=[chain1, chain2], callbacks=[sagemaker_callback])
# Run overall sequential chain
overall_chain.run(**INPUT_VARIABLES)
# Reset the callback
sagemaker_callback.flush_tracker()In [ ]:
RUN_NAME = "run-scenario-3"
PROMPT_TEMPLATE = "Who is the oldest person alive? And what is their current age raised to the power of 1.51?"In [ ]:
with Run(experiment_name=EXPERIMENT_NAME, run_name=RUN_NAME, sagemaker_session=session) as run:
# Create SageMaker Callback
sagemaker_callback = SageMakerCallbackHandler(run)
# Define LLM model with callback
llm = OpenAI(callbacks=[sagemaker_callback], **HPARAMS)
# Define tools
tools = load_tools(["serpapi", "llm-math"], llm=llm, callbacks=[sagemaker_callback])
# Initialize agent with all the tools
agent = initialize_agent(tools, llm, agent="zero-shot-react-description", callbacks=[sagemaker_callback])
# Run agent
agent.run(input=PROMPT_TEMPLATE)
# Reset the callback
sagemaker_callback.flush_tracker()In [ ]:
#Load
logs = ExperimentAnalytics(experiment_name=EXPERIMENT_NAME)
#Convert as pandas dataframe
df = logs.dataframe(force_refresh=True)
print(df.shape)
df.head()In [ ]: