Skip to content

Commit

Permalink
Anthropic to support tool usage
Browse files Browse the repository at this point in the history
  • Loading branch information
SmittieC committed Apr 17, 2024
1 parent ce94ee7 commit a0ff29f
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 13 deletions.
2 changes: 1 addition & 1 deletion apps/service_providers/llm_service/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import pydantic
from langchain.agents.openai_assistant import OpenAIAssistantRunnable
from langchain.chat_models.base import BaseChatModel
from langchain_community.chat_models import ChatAnthropic
from langchain_anthropic import ChatAnthropic
from langchain_core.callbacks import BaseCallbackHandler
from langchain_core.language_models import BaseLanguageModel
from langchain_openai.chat_models import AzureChatOpenAI, ChatOpenAI
Expand Down
23 changes: 11 additions & 12 deletions apps/service_providers/llm_service/runnables.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

import openai
import pytz
from langchain.agents import AgentExecutor, create_openai_tools_agent
from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain.agents.openai_assistant.base import OpenAIAssistantFinish
from langchain.memory import ConversationBufferMemory
from langchain_core.load import Serializable
Expand Down Expand Up @@ -180,7 +180,8 @@ def _build_chain(self) -> Runnable[dict[str, Any], Any]:

@property
def prompt(self):
system_prompt = SystemMessagePromptTemplate.from_template(self.experiment.prompt_text)
prompt = self.experiment.prompt_text + "{current_time}"
system_prompt = SystemMessagePromptTemplate.from_template(prompt)
return ChatPromptTemplate.from_messages(
[
system_prompt,
Expand Down Expand Up @@ -209,6 +210,9 @@ def _build_chain(self) -> Runnable[dict[str, Any], str]:
return (
{"input": RunnablePassthrough()}
| RunnablePassthrough.assign(source_material=RunnableLambda(lambda x: self.source_material))
| RunnablePassthrough.assign(
current_time=RunnableLambda(lambda x: str(datetime.now().astimezone(pytz.UTC)))
)
| RunnablePassthrough.assign(
history=RunnableLambda(self.memory.load_memory_variables) | itemgetter("history")
)
Expand All @@ -227,12 +231,13 @@ def _build_chain(self) -> Runnable[dict[str, Any], dict]:
assert self.experiment.tools_enabled
model = self.llm_service.get_chat_model(self.experiment.llm, self.experiment.temperature)
tools = get_tools(self.session)
# TODO: use https://python.langchain.com/docs/integrations/chat/anthropic_functions
# when we implement this for anthropic
agent = (
RunnablePassthrough.assign(source_material=RunnableLambda(lambda x: self.source_material))
| RunnablePassthrough.assign(
current_time=RunnableLambda(lambda x: str(datetime.now().astimezone(pytz.UTC)))
)
| RunnableLambda(self.format_input)
| create_openai_tools_agent(llm=model, tools=tools, prompt=self.prompt)
| create_tool_calling_agent(llm=model, tools=tools, prompt=self.prompt)
)
executor = AgentExecutor.from_agent_and_tools(
agent=agent,
Expand All @@ -245,13 +250,7 @@ def _build_chain(self) -> Runnable[dict[str, Any], dict]:
@property
def prompt(self):
prompt = super().prompt
return ChatPromptTemplate.from_messages(
prompt.messages
+ [
("system", str(datetime.now().astimezone(pytz.UTC))),
MessagesPlaceholder("agent_scratchpad"),
]
)
return ChatPromptTemplate.from_messages(prompt.messages + [MessagesPlaceholder("agent_scratchpad")])


class AssistantExperimentRunnable(BaseExperimentRunnable):
Expand Down

0 comments on commit a0ff29f

Please sign in to comment.