建设部网站资质查询6福建建设管理中心网站
2026/2/10 4:31:05 网站建设 项目流程
建设部网站资质查询6,福建建设管理中心网站,品牌公司,仿站网站建设一、怎么限制大模型的输出格式 使用提示工程#xff08;Prompt Engineering#xff09; 最简单直接的方法#xff1a;在提示词#xff08;prompt#xff09;中明确要求输出格式#xff08;如 JSON、YAML、XML 等#xff09;#xff0c;并提供示例。例如#xff1a;“…一、怎么限制大模型的输出格式使用提示工程Prompt Engineering最简单直接的方法在提示词prompt中明确要求输出格式如 JSON、YAML、XML 等并提供示例。例如“请以以下 JSON 格式返回…”并附上具体字段定义和样例。在提示词中加入示例结构或“输出格式规范“之类的段落也能有效提高格式契合度。优点实现简单无需额外训练或修改模型本身。缺点结构严格的格式尤其 JSON仍易出错难以确保 100% 达标。使用function call的方式这种方式的核心思想是让大模型不直接输出自然语言而是通过“调用一个函数”返回结构化参数这样你就可以用程序严格解析它的返回值确保输出符合要求。1.基本原理大模型在生成内容时本质是“预测文本”。如果你只给它自然语言指令它的输出可能会跑偏比如漏字段、多字段、错格式。Function Call 是在模型 API 层面增加的一种“协议”你定义一个函数其实是一个结构化描述告诉模型这个函数的参数和数据类型模型会输出一个 JSON 参数对象来“调用”这个函数你拿到这个参数就能保证它符合你定义的结构举个简单例子functions [ { name: create_task, description: 创建一个任务, parameters: { type: object, properties: { title: {type: string, description: 任务标题}, priority: {type: integer, description: 任务优先级1为最高}, due_date: {type: string, format: date} }, required: [title, priority] } }]这样模型被约束只能“生成”出​​​​​​​{ title: 写周报, priority: 1, due_date: 2025-08-15}而不会生成你没定义的字段也不会乱写格式比如用中文写“优先级一”。2. 流程用 function call 限制输出的完整流程大致是这样2.1 定义函数 schema用 JSON Schemaparameters描述函数的参数类型、必填字段、值的格式。2.2 调用模型并指定可用函数在 API 请求里带上 functions有的 API 叫 tools。2.3 模型决定调用哪个函数如果你要求它必须调用某个函数可以设置 function_call{“name”: “xxx”}否则它也可能选择不调用2.4 返回结果是结构化 JSON模型会返回一个 function_call.arguments 字段内容就是 JSON 字符串符合你 schema。2.5 解析参数并执行逻辑你在代码中 json.loads() 后就能直接用。3. 为什么能限制输出格式因为 function call 的参数必须符合你定义的 schema类型限制string / integer / boolean / array / object必填字段required值格式format如 date, email, uri枚举值enum固定值集合嵌套结构字段可以是对象或数组这就像给模型套了一个“JSON护栏”不让它乱跑。即便它生成错了API 层面会尝试自动修正或者直接抛错让你捕获处理。4. 注意事项4.1 描述要足够清晰字段含义、取值范围写清楚不要模糊不清否则模型会生成奇怪的值4.2 字段名稳定性尽量用英文小写下划线不要用中文字段名否则模型容易生成错误4.3 嵌套结构越复杂模型越容易出错尽量分层调用多个函数而不是一次返回超级复杂的 JSON4.4 有些 API 会自动做 JSON 修正比如 OpenAI、DashScope 在 function call 里会帮你补全缺失字段、修正数据类型但如果修不回来会返回报错你要在代码里做兜底5. 一个完整示例DashScopeDashScope 支持 function call比如​​​​​​​import dashscopefrom dashscope import Generationdashscope.api_key xxxfunctions [ { name: create_task, description: 创建一个任务, parameters: { type: object, properties: { title: {type: string}, priority: {type: integer}, due_date: {type: string, format: date} }, required: [title, priority] } }]response Generation.call( modelqwen-plus, prompt帮我生成一个重要的任务明天截止, functionsfunctions, function_call{name: create_task})print(response.output.choices[0].message[function_call][arguments])好处保证返回的 arguments 是合法 JSON结构固定字段不会乱方便直接 json.loads() 转成 Python dict 用二、MCP和Function call的区别mcp是通用协议层的标准化约定更偏抽象的通用function call是某大模型厂商特定的实现方式和特性更偏具体实现。函数调用 (Function Calling)2023年OpenAI等机构引入了函数调用机制这是一个巨大的进步。开发者可以预先定义结构化的函数如 getWeather(location)模型在需要时会输出一个标准化的JSON对象来“请求”调用这个函数而不是模糊的自然语言指令。概念对比表下面是获得天气的Function call工作流程示意图以及获得当前天气和当前时间的Function call具体实现​​​​​​​import dashscopefrom dashscope import Generationfrom datetime import datetimeimport randomimport jsonimport requestsdashscope.api_key sk-xxxx# 定义工具列表模型在选择使用哪个工具时会参考工具的name和descriptiontools [ # 工具1 获取当前时刻的时间 { type: function, function: { name: get_current_time, description: 当你想知道现在的时间时非常有用。, parameters: {} # 因为获取当前时间无需输入参数因此parameters为空字典 } }, # 工具2 获取指定城市的天气 { type: function, function: { name: get_current_weather, description: 当你想查询指定城市的天气时非常有用。, parameters: { # 查询天气时需要提供位置因此参数设置为location type: object, properties: { location: { type: string, description: 城市或县区比如北京市、杭州市、余杭区等。 } } }, required: [ location ] } }]# 基于外部网站的天气查询工具。返回结果示例{location: \u5317\u4eac\u5e02, weather: clear sky, temperature: 17.94}def get_current_weather(location): api_key xxxx # 替换为你自己的OpenWeatherMap API密钥用我的也无所谓啦反正免费。 url fhttp://api.openweathermap.org/data/2.5/weather?q{location}appid{api_key}unitsmetric response requests.get(url) if response.status_code 200: data response.json() weather data[weather][0][description] temp data[main][temp] return json.dumps({location: location, weather: weather, temperature: temp}) else: return json.dumps({location: location, error: Unable to fetch weather data}) # 查询当前时间的工具。返回结果示例“当前时间2024-04-15 17:15:18。“def get_current_time(): # 获取当前日期和时间 current_datetime datetime.now() # 格式化当前日期和时间 formatted_time current_datetime.strftime(%Y-%m-%d %H:%M:%S) # 返回格式化后的当前时间 return f当前时间{formatted_time}。 # 封装模型响应函数def get_response(messages): response Generation.call( modelqwen-plus, messagesmessages, toolstools, seedrandom.randint(1, 10000), # 设置随机数种子seed如果没有设置则随机数种子默认为1234 result_formatmessage # 将输出设置为message形式 ) return response def call_with_messages(): print(\n) messages [ { content: input(请输入), # 提问示例现在几点了 一个小时后几点 北京天气如何 role: user } ] # 模型的第一轮调用 first_response get_response(messages) assistant_output first_response.output.choices[0].message print(f\n大模型第一轮输出信息{first_response}\n) messages.append(assistant_output) if tool_calls not in assistant_output: # 如果模型判断无需调用工具则将assistant的回复直接打印出来无需进行模型的第二轮调用 print(f最终答案{assistant_output.content}) return # 如果模型选择的工具是get_current_weather elif assistant_output.tool_calls[0][function][name] get_current_weather: tool_info {name: get_current_weather, role:tool} # location json.loads(assistant_output.tool_calls[0][function][arguments])[properties][location][description] location json.loads(assistant_output.tool_calls[0][function][arguments])[location] # print(location) tool_info[content] get_current_weather(location) # 如果模型选择的工具是get_current_time elif assistant_output.tool_calls[0][function][name] get_current_time: tool_info {name: get_current_time, role:tool} tool_info[content] get_current_time() print(f工具输出信息{tool_info[content]}\n) messages.append(tool_info) # 模型的第二轮调用对工具的输出进行总结 second_response get_response(messages) print(f大模型第二轮输出信息{second_response}\n) print(f最终答案{second_response.output.choices[0].message[content]}) if __name__ __main__: call_with_messages()读者福利如果大家对大模型感兴趣这套大模型学习资料一定对你有用对于0基础小白入门如果你是零基础小白想快速入门大模型是可以考虑的。一方面是学习时间相对较短学习内容更全面更集中。二方面是可以根据这些资料规划好学习计划和方向。包括大模型学习线路汇总、学习阶段大模型实战案例大模型学习视频人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型一直在更新更多的大模型学习和面试资料已经上传带到CSDN的官方了有需要的朋友可以扫描下方二维码免费领取【保证100%免费】AI大模型学习路线汇总大模型学习路线图整体分为7个大的阶段全套教程文末领取哈第一阶段从大模型系统设计入手讲解大模型的主要方法第二阶段在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用第三阶段大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统第四阶段大模型知识库应用开发以LangChain框架为例构建物流行业咨询智能问答系统第五阶段大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型第六阶段以SD多模态大模型为主搭建了文生图小程序案例第七阶段以大模型平台应用与开发为主通过星火大模型文心大模型等成熟大模型构建大模型行业应用。大模型实战案例光学理论是没用的要学会跟着一起做要动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。大模型视频和PDF合集观看零基础学习书籍和视频看书籍和视频学习是最快捷也是最有效果的方式跟着视频中老师的思路从基础到深入还是很容易入门的。学会后的收获• 基于大模型全栈工程实现前端、后端、产品经理、设计、数据分析等通过这门课可获得不同能力• 能够利用大模型解决相关实际项目需求大数据时代越来越多的企业和机构需要处理海量数据利用大模型技术可以更好地处理这些数据提高数据分析和决策的准确性。因此掌握大模型应用开发技能可以让程序员更好地应对实际项目需求• 基于大模型和企业数据AI应用开发实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能学会Fine-tuning垂直训练大模型数据准备、数据蒸馏、大模型部署一站式掌握• 能够完成时下热门大模型垂直领域模型训练能力提高程序员的编码能力大模型应用开发需要掌握机器学习算法、深度学习框架等技术这些技术的掌握可以提高程序员的编码能力和分析能力让程序员更加熟练地编写高质量的代码。获取方式一直在更新更多的大模型学习和面试资料已经上传带到CSDN的官方了有需要的朋友可以扫描下方二维码免费领取【保证100%免费】

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询