当前位置: 首页 > news >正文

有什么有趣的网站做网站第一步做什么

有什么有趣的网站,做网站第一步做什么,如何选择网站改版公司,怎样把自己的网站做推广1.背景 Function Calling由OpenAI提出,用于解决AI与外部系统交互的“桥梁”,通过将自然语言转化为结构化请求。允许模型根据用户输入的自然语言指令,自动识别需要调用的外部工具或API函数,并生成符合要求的结构化参数&#xff08…

1.背景

Function Calling由OpenAI提出,用于解决AI与外部系统交互的“桥梁”,通过将自然语言转化为结构化请求。允许模型根据用户输入的自然语言指令,自动识别需要调用的外部工具或API函数,并生成符合要求的结构化参数(如JSON格式)。这一技术让AI不仅能生成文本,还能与外部系统交互,完成更复杂的任务。
今天我们通过一个demo演示Function Calling 应用。

2.环境

  • python 版本:3.11
  • LLM: deepseek-chat
  • SDK:openai 1.63.2

3.步骤

1)先注册deepseek账号,并充值,获取到APIkey
在这里插入图片描述
链接:https://platform.deepseek.com/api_keys

2)写一个获取最新股价的tools

def get_closing_price(name):if name == "青岛啤酒":return "67.92"elif name == "贵州茅台":return "1488.21"else:return "未搜到该股票"

3)定义一个工具列表,用于结构化说明tools,便于大模型理解

tools = [# 定义一个字典,表示一个特定的工具{# 工具的类型是函数"type": "function",# 函数的具体信息"function": {# 函数的名称是get_closing_price"name": "get_closing_price",# 函数的描述,说明了该函数的用途"description": "使用该工具获取指定股票的收盘价",# 函数的参数信息"parameters": {# 参数的类型是对象"type": "object",# 参数的属性"properties": {# 需要一个名称参数"name": {# 参数类型是字符串"type": "string",# 参数的描述,说明了需要提供股票名称"description": "股票名称",}},# 表示在参数中,'name'字段是必须提供的"required": ["name"]},}},
]

4)写一个程序调用大模型 + tools

import json
import os
# 导入OpenAI库,用于与OpenAI的API进行交互
from openai import OpenAIclient = OpenAI(api_key="sk-xxx【自己申请】",base_url="https://api.deepseek.com/v1")def send_messages(messages):response = client.chat.completions.create(model="deepseek-chat",messages=messages,tools=tools,tool_choice="auto")return response# 定义一个工具列表,用于存储不同类型的工具信息
tools = [# 定义一个字典,表示一个特定的工具{# 工具的类型是函数"type": "function",# 函数的具体信息"function": {# 函数的名称是get_closing_price"name": "get_closing_price",# 函数的描述,说明了该函数的用途"description": "使用该工具获取指定股票的收盘价",# 函数的参数信息"parameters": {# 参数的类型是对象"type": "object",# 参数的属性"properties": {# 需要一个名称参数"name": {# 参数类型是字符串"type": "string",# 参数的描述,说明了需要提供股票名称"description": "股票名称",}},# 表示在参数中,'name'字段是必须提供的"required": ["name"]},}},
]def get_closing_price(name):if name == "青岛啤酒":return "67.92"elif name == "贵州茅台":return "1488.21"else:return "未搜到该股票"if __name__ == "__main__":messages = [{"role": "user", "content": "青岛啤酒的收盘价是多少?"}]response = send_messages(messages)# 将API响应中的第一个选择的消息添加到消息列表中messages.append(response.choices[0].message)print("回复:")# 打印回复消息的内容print(response.choices[0].message.content)print("工具选择:")# 打印AI模型的响应中第一个选择的消息的工具调用信息print(response.choices[0].message.tool_calls)# 检查响应中的第一个选择是否包含工具调用# 检查响应中是否包含工具调用if response.choices[0].message.tool_calls != None:# 如果包含工具调用,获取第一个工具调用对象tool_call = response.choices[0].message.tool_calls[0]# 检查工具调用的函数名称是否为获取收盘价的函数if tool_call.function.name == "get_closing_price":# 解析函数参数,获取股票名称arguments_dict = json.loads(tool_call.function.arguments)# 调用函数获取收盘价price = get_closing_price(arguments_dict['name'])# 将获取到的收盘价信息添加到消息列表中messages.append({"role": "tool","content": price,"tool_call_id": tool_call.id})# 打印消息列表print("messages: ",messages)# 发送消息列表并获取新的响应response = send_messages(messages)print("回复:")print(response.choices[0].message.content)

4.成果

回复:工具选择:
[ChatCompletionMessageToolCall(id='call_0_bcae63ee-55f4-49cd-9310-800f443a8ed8', function=Function(arguments='{"name":"青岛啤酒"}', name='get_closing_price'), type='function', index=0)]
messages:  [{'role': 'user', 'content': '青岛啤酒的收盘价是多少?'}, ChatCompletionMessage(content='', refusal=None, role='assistant', annotations=None, audio=None, function_call=None, tool_calls=[ChatCompletionMessageToolCall(id='call_0_bcae63ee-55f4-49cd-9310-800f443a8ed8', function=Function(arguments='{"name":"青岛啤酒"}', name='get_closing_price'), type='function', index=0)]), {'role': 'tool', 'content': '67.92', 'tool_call_id': 'call_0_bcae63ee-55f4-49cd-9310-800f443a8ed8'}]
回复:
青岛啤酒的收盘价是67.92元。

5.总结

1)我一直用的java开发,写python脚本比较吃力,借助“通义灵码”轻松多了
2) 为什么需要2次调用大模型?

第一次,交互用于触发工具调用;
第二次,交互用于将工具调用的结果返回给模型,使其能够整合信息并生成用户可理解的最终回复。
这种设计符合“工具调用”的典型使用模式:先由模型判断是否需要调用工具,再实际调用工具并将结果反馈回模型以生成完整回答。

3)为什么要导入OpenAI sdk ?
OpenAI sdk 调用大模型的协议,各个大模型都做了兼容。 这样底层换了LLM也不需要更改,接口定义及程序调用。

http://www.dtcms.com/a/488037.html

相关文章:

  • 知名网站制作公司管理会计
  • ceph 手动编辑 crush 规则
  • 湘潭网站建设湘潭营销型网站建设实训报告
  • 网站的风格有哪些创建一个平台多少钱
  • PG Scrub 全流程核心步骤清单
  • 优先级队列的学习
  • 如今做那些网站致富苏州手机社区网站建设
  • 广州青菜篮农业有限公司网站建设项目东莞公司做网站
  • 如何登录网站服务器昆明营销网站建设
  • 东莞市企业网站建设哪家好什么网站可以做推广的
  • 3DMAX神经网络拓扑结构图插件NeuralNetworkTopology使用方法详解
  • 运 算 符
  • 项目商业网站建设方案长春市网站优化公司
  • Oracle下载JDK无需登录
  • 模拟算法专题总结:直接按题意实现的艺术
  • 昭阳区住房和城乡建设管理局网站网站建设最低价
  • 济南市住房和城乡建设局网站wordpress多图主题
  • TOP TOY闯关港股上市:三大关键挑战亟待破局,品牌如何独立增长?
  • TDengine 数学函数 FLOOR 用户手册
  • 第三方课题验收测试机构:【API测试工具Apifox使用指南】
  • 前端-APIs-day2
  • 织梦个人网站模板西安旅游
  • 个人网站设计与实现源码在线做网站黄
  • Highcharts 绘制之道(1):用数据构建基础图形
  • 【机器学习02】梯度下降、多维特征线性回归、特征缩放
  • 一个网站每年维护费用品牌营销网站
  • 有哪些做的很漂亮的网站商城小程序介绍
  • Vue3+Three.js:第05期 时间控制,requestAnimationFrame vs Clock
  • 松江做微网站电子商务网站的优点有那些
  • 个体营业执照网站备案做网站都需要用到什么