from zhipuai import ZhipuAI
engine = sqlalchemy.create_engine('mysql+pymysql://{role}:{password}@localhost:{port}/{db}')
select * from major_list
df = pd.read_sql(sql,engine)
def get_major_name(maj_category:str,maj_name:str,maj_code:str,degree_catgory:str,years:str,added_years:str):
if maj_category is not None:
df= df[df['maj_category']==maj_category]
if maj_name is not None:
df= df[df['maj_name']==maj_name]
if maj_code is not None:
df= df[df['maj_code']==maj_code]
if degree_catgory is not None:
df= df[df['degree_category']==degree_catgory]
df= df[df['years']==years]
if added_years is not None:
df= df[df['added_years']==added_years]
return {"major_list":tb}
def parse_function_call(model_response,messages):
# 处理函数调用结果,根据模型返回参数,调用对应的函数。
# 调用函数返回结果后构造tool message,再次调用模型,将函数结果输入模型
# 模型会将函数调用结果以自然语言格式返回给用户。
if model_response.choices[0].message.tool_calls:
tool_call = model_response.choices[0].message.tool_calls[0]
args = tool_call.function.arguments
if tool_call.function.name == "get_major_name":
function_result = get_flight_number(**json.loads(args))
"content": f"{json.dumps(function_result)}",
"tool_call_id":tool_call.id
response = client.chat.completions.create(
model="glm-4", # 填写需要调用的模型名称
print(response.choices[0].message)
messages.append(response.choices[0].message.model_dump())
client = ZhipuAI(api_key)
"name": "get_flight_number",
"description": "根据专业大类或专业名或专业代码或学位授予分类或学制或增设年份查询专业信息",
"description": "学位授予分类",
messages.append({"role": "system", "content": "不要假设或猜测传入函数的参数值。如果用户的描述不明确,请要求用户提供必要信息"})
messages.append({"role": "user", "content": "帮我查询工艺美术这个专业所有信息"})
response = client.chat.completions.create(
print(response.choices[0].message)
messages.append(response.choices[0].message.model_dump())
parse_function_call(response,messages)