mirror of
https://github.com/hwchase17/langchain
synced 2024-11-16 06:13:16 +00:00
48 lines
1.4 KiB
Python
48 lines
1.4 KiB
Python
|
from typing import List, Tuple
|
||
|
|
||
|
from ionic_langchain.tool import IonicTool
|
||
|
from langchain.agents import AgentExecutor, create_openai_tools_agent
|
||
|
from langchain_core.messages import AIMessage, SystemMessage
|
||
|
from langchain_core.prompts import (
|
||
|
ChatPromptTemplate,
|
||
|
HumanMessagePromptTemplate,
|
||
|
MessagesPlaceholder,
|
||
|
)
|
||
|
from langchain_core.pydantic_v1 import BaseModel, Field
|
||
|
from langchain_openai import ChatOpenAI
|
||
|
|
||
|
tools = [IonicTool().tool()]
|
||
|
|
||
|
llm = ChatOpenAI(temperature=0.5, model_name="gpt-3.5-turbo-1106", streaming=True)
|
||
|
|
||
|
# You can modify these!
|
||
|
AI_CONTENT = """
|
||
|
I should use the full pdp url that the tool provides me.
|
||
|
Always include query parameters
|
||
|
"""
|
||
|
SYSTEM_CONTENT = """
|
||
|
You are a shopping assistant.
|
||
|
You help humans find the best product given their {input}.
|
||
|
"""
|
||
|
messages = [
|
||
|
SystemMessage(content=SYSTEM_CONTENT),
|
||
|
HumanMessagePromptTemplate.from_template("{input}"),
|
||
|
AIMessage(content=AI_CONTENT),
|
||
|
MessagesPlaceholder(variable_name="agent_scratchpad"),
|
||
|
]
|
||
|
|
||
|
prompt = ChatPromptTemplate.from_messages(messages)
|
||
|
agent = create_openai_tools_agent(llm, tools, prompt)
|
||
|
|
||
|
|
||
|
class AgentInput(BaseModel):
|
||
|
input: str
|
||
|
chat_history: List[Tuple[str, str]] = Field(
|
||
|
..., extra={"widget": {"type": "chat", "input": "input", "output": "output"}}
|
||
|
)
|
||
|
|
||
|
|
||
|
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True).with_types(
|
||
|
input_type=AgentInput
|
||
|
)
|