Closed6
langchainとlangsmithでLLMモニタリング
環境
langchain==0.0.310
langsmith==0.0.43
参考 LangSmith
- LangSmithでAPIキー発行
- 環境変数を.envファイルに設定
OPENAI_API_KEY=sk-xxx
LANGCHAIN_TRACING_V2=true
LANGCHAIN_ENDPOINT=https://api.smith.langchain.com
LANGCHAIN_API_KEY=ls__xxx
- テストプログラムを実行
from langchain.chat_models import ChatOpenAI
from dotenv import load_dotenv
load_dotenv()
llm = ChatOpenAI()
print(llm.predict("Hello, how are you?"))
Trace
LLM Calls
Monitor
積み残し
- Streaming時のMonitoringができるか
- Function CallingのMonitoringができるか
- エージェントのMonitoringができるか
Function CallingのMonitoringもできてそう
確認プログラム
from langchain.agents import Tool
from langchain.chains import LLMMathChain
from langchain.chat_models import ChatOpenAI
from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain.tools.render import format_tool_to_openai_function
from langchain.agents.format_scratchpad import format_to_openai_functions
from langchain.agents.output_parsers import OpenAIFunctionsAgentOutputParser
from langchain.agents import AgentExecutor
from dotenv import load_dotenv
load_dotenv()
llm = ChatOpenAI(model="gpt-3.5-turbo-0613")
llm_math_chain = LLMMathChain.from_llm(llm=llm, verbose=True)
tools = [
Tool(
name="Calculator",
func=llm_math_chain.run,
description="useful for when you need to answer questions about math",
)
]
prompt = ChatPromptTemplate.from_messages(
[
("system", "You are a helpful assistant"),
("user", "{input}"),
MessagesPlaceholder(variable_name="agent_scratchpad"),
]
)
llm_with_tools = llm.bind(functions=[format_tool_to_openai_function(t) for t in tools])
agent = (
{
"input": lambda x: x["input"],
"agent_scratchpad": lambda x: format_to_openai_functions(
x["intermediate_steps"]
),
}
| prompt
| llm_with_tools
| OpenAIFunctionsAgentOutputParser()
)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
agent_executor.invoke(
{
"input": "2の14乗は何ですか?",
}
)
まさにこういうのを確認したかったんだよな~
SaaSじゃなくOSSでできないかなぁ......
もうちょっと簡易化したテストプログラム
ReActのときはエージェントのプロンプト構築処理が複雑だったけど、OpenAI_Functionsはツールが増えてもシステムプロンプトは複雑にならないのが良い
from langchain.agents import Tool, initialize_agent, AgentType
from langchain.chains import LLMMathChain
from langchain.chat_models import ChatOpenAI
from dotenv import load_dotenv
load_dotenv()
llm = ChatOpenAI(model="gpt-3.5-turbo-0613")
llm_math_chain = LLMMathChain.from_llm(llm=llm, verbose=True)
tools = [
Tool(
name="Calculator",
func=llm_math_chain.run,
description="useful for when you need to answer questions about math",
)
]
agent_executor = initialize_agent(
tools, llm, agent=AgentType.OPENAI_FUNCTIONS, verbose=True
)
agent_executor.invoke(
{
"input": "2の14乗は何ですか?",
}
)
このスクラップは2023/10/07にクローズされました