定义模型
from langchain.schema import SystemMessage, HumanMessage
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import JsonOutputParser
from langchain_core.tools import tool
from langchain_core.utils.function_calling import convert_to_openai_tool
from operator import itemgetter
langchain_key = 'lsv2_pt_067c82bxxxxxxxxxxxxxxe_c2934a750d'
import os
os.environ['LANGCHAIN_TRACING_V2'] = 'true'
os.environ['LANGCHAIN_API_KEY'] = langchain_key
os.environ['LANGCHAIN_ENDPOINT'] = 'https://api.smith.langchain.com'
os.environ['LANGCHAIN_PROJECT'] = 'pr-upbeat-electrocardiogram-64'
zhipu_key = 'a66dbxxxxxxxxxxxxxxxxxxxxxxWpHQ9tC83zWJo'
llm = ChatOpenAI(temperature=0.01,model="glm-4-flash",openai_api_key=zhipu_key,openai_api_base="https://open.bigmodel.cn/api/paas/v4/"
)
通过tool注解定义工具函数
@tool
def multiply(first_int: int, second_int: int) -> int:"""将两个整数相乘。"""print('---------multiply-----------------')return first_int * second_int@tool
def add(first_int: int, second_int: int) -> int:"将两个整数相加。"print('---------add-----------------')return first_int + second_int@tool
def exponentiate(base: int, exponent: int) -> int:"指数运算"print('---------exponentiate-----------------')return base**exponent
绑定工具
tools = [multiply, add, exponentiate]
llm_with_tools = llm.bind_tools(tools)
大模型通过query和绑定的tool进行分析,返回所需要的首个工具(并没有调用工具)
llm_with_tools.invoke('请使用工具计算,4+5*3是多少?')

通过构建智能体,封装工具和大模型,进行解决问题
from langchain.agents import initialize_agent
from langchain.agents import AgentType, initialize_agent
agent_chain = initialize_agent(tools, llm, agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

小黑打算通过源码分析,做一个简单的demo(通过调用多个工具,并依次分析每个工具的输出,有序分析和解决问题),了解智能体的框架,加油!!准备今晚天坛训练!
