怎么做百度网站验证中国门户网站

张小明 2025/12/31 16:42:01
怎么做百度网站验证,中国门户网站,棋牌类网站是用游戏方式做的吗,新网 网站建设引言 大家好#xff0c;我是 Wise 玩转 AI。在系列文章的第一篇中#xff0c;我们介绍了CrewAI框架的核心概念和医院导诊智能体的整体规划。今天#xff0c;我们将开始第 1 期的工程实践#xff0c;从零开始构建一个基础的医院导诊智能体。 第 1 期的目标是实现最基础的导…引言大家好我是 Wise 玩转 AI。在系列文章的第一篇中我们介绍了CrewAI框架的核心概念和医院导诊智能体的整体规划。今天我们将开始第 1 期的工程实践从零开始构建一个基础的医院导诊智能体。第 1 期的目标是实现最基础的导诊功能科室查询和医生信息查询。虽然功能简单但这一期将为整个项目奠定基础让我们掌握 CrewAI 的基本使用方法并实践智能体工程化的核心思想。正如之前强调的一个稳定的智能体系统始于清晰的结构和明确的模块划分。第 1 期我们将重点实现智能体的输入解析和基础响应能力这对应了智能体五大核心模块中的 输入解析器 和 任务规划器 的基础部分。环境准备在开始编码前我们需要准备开发环境Python 3.11 环境安装必要的库pip install crewai1.6.1 # 最新版CrewAI pip install crewai[tools] pip install langchain-community pip install deepseek-ai pip install python-dotenv # 用于管理环境变量 pip install pydantic # 用于数据验证准备一个 OpenAI API 密钥或其他兼容的 LLM API创建一个.env文件存储 API 密钥DEEPSEEK_API_KEYsk-xxxxxxxxxx项目结构设计为了保证项目的可扩展性我们采用模块化的设计hospital_agent/ ├── agents/ # 智能体定义 │ └── base_agent.py ├── tasks/ # 任务定义 │ └── base_tasks.py ├── tools/ # 工具定义 │ └── hospital_tools.py ├── data/ # 模拟数据 │ └── hospital_data.py ├── main.py # 主程序 └── .env # 环境变量这种结构体现了我们之前提到的 结构化、模块化 原则每个组件各司其职便于后续扩展。实现基础数据与工具首先我们需要一些基础的医院数据和查询工具。在实际项目中这些数据会来自医院的数据库但为了简化我们使用模拟数据。创建data/hospital_data.py# 模拟医院科室数据 DEPARTMENTS { 内科: { location: 门诊楼2层, opening_hours: 周一至周五 8:00-17:30周六 8:00-12:00, specialties: [感冒, 发烧, 高血压, 糖尿病] }, 外科: { location: 门诊楼3层, opening_hours: 周一至周五 8:00-17:30周日 8:00-12:00, specialties: [骨折, 外伤, 阑尾炎, 疝气] } ,# 更多科室... } # 模拟医生数据 DOCTORS { 张医生: { department: 内科, title: 主任医师, specialty: 心血管疾病, available_days: [周一, 周三, 周五] }, 李医生: { department: 外科, title: 副主任医师, specialty: 骨科, available_days: [周二, 周四, 周六] }, # 更多医生... }接下来实现查询这些数据的工具创建tools/hospital_tools.pyfrom crewai import Agent from crewai.llms.base_llm import BaseLLM from tools.hospital_tools import DepartmentQueryTool, DoctorQueryTool import requests import json import os class DeepSeekLLM(BaseLLM): def __init__(self, api_key, modeldeepseek-chat, temperature0.3, max_tokens1000): # 正确调用父类初始化传入必要的参数 super().__init__( modelmodel, temperaturetemperature, api_keyapi_key, base_urlhttps://api.deepseek.com/v1, providerdeepseek ) self.api_key api_key self.model model self.temperature temperature self.max_tokens max_tokens # 确保使用 DeepSeek 的 API 端点 self.api_url https://api.deepseek.com/v1/chat/completions def call(self, messages, **kwargs): 实现BaseLLM的call方法 headers { Authorization: fBearer {self.api_key}, Content-Type: application/json } # 处理不同的消息格式 if isinstance(messages, str): data { model: self.model, messages: [{role: user, content: messages}], temperature: float(self.temperature), max_tokens: int(self.max_tokens) } elif isinstance(messages, list): # 确保消息格式正确 formatted_messages [] for msg in messages: if isinstance(msg, dict): formatted_messages.append({ role: msg.get(role, user), content: msg.get(content, ) }) else: formatted_messages.append({role: user, content: str(msg)}) data { model: self.model, messages: formatted_messages, temperature: float(self.temperature), max_tokens: int(self.max_tokens) } else: data { model: self.model, messages: [{role: user, content: str(messages)}], temperature: float(self.temperature), max_tokens: int(self.max_tokens) } try: print(f发送请求到 DeepSeek API...) response requests.post( self.api_url, headersheaders, jsondata ) print(f收到响应状态码: {response.status_code}) response.raise_for_status() result response.json() # 更新token使用情况 if usage in result: self._track_token_usage_internal(result[usage]) return result[choices][0][message][content] except Exception as e: error_msg fAPI 请求错误: {str(e)} if hasattr(e, response) and e.response is not None: error_msg f\n状态码: {e.response.status_code} try: error_details e.response.json() error_msg f\n错误详情: {json.dumps(error_details, indent2, ensure_asciiFalse)} except: error_msg f\n响应内容: {e.response.text} print(error_msg) return f处理请求时出错: {str(e)} # 保持向后兼容 def generate(self, prompt): return self.call(prompt) # 添加 __call__ 方法以兼容 CrewAI def __call__(self, prompt): return self.call(prompt) class HospitalGuideAgents: staticmethod def department_agent(): 创建科室导诊智能体 # 确保使用环境变量中的 API Key api_key os.getenv(DEEPSEEK_API_KEY) if not api_key or api_key 您的DeepSeek_API_Key: raise ValueError(请设置有效的 DEEPSEEK_API_KEY 环境变量) llm DeepSeekLLM(api_keyapi_key) return Agent( role医院科室导诊专家, goal准确回答患者关于医院科室的各种问题包括位置、出诊时间和擅长治疗的疾病, backstory你是一位经验丰富的医院导诊专家熟悉医院所有科室的信息能够清晰准确地为患者提供科室相关咨询服务。, tools[DepartmentQueryTool()], llmllm, verboseTrue, allow_delegationFalse, max_iter3 ) staticmethod def doctor_agent(): 创建医生信息智能体 # 确保使用环境变量中的 API Key api_key os.getenv(DEEPSEEK_API_KEY) if not api_key or api_key 您的DeepSeek_API_Key: raise ValueError(请设置有效的 DEEPSEEK_API_KEY 环境变量) llm DeepSeekLLM(api_keyapi_key) return Agent( role医生信息咨询专家, goal为患者提供医生的专业背景、专长和出诊时间等信息, backstory你负责管理医院所有医生的公开信息能够准确回答患者关于医生的咨询。, tools[DoctorQueryTool()], llmllm, verboseTrue, allow_delegationFalse, max_iter3 ) name 科室查询工具 description 用于查询医院科室的位置、出诊时间和擅长治疗的疾病 def _run(self, department_name: str) - str: 查询指定科室的信息 department DEPARTMENTS.get(department_name) if not department: return f未找到{department_name}的信息请确认科室名称是否正确。 return (f{department_name}位于{department[location]}f出诊时间{department[opening_hours]}f擅长治疗{,.join(department[specialties])}) class DoctorQueryTool(BaseTool): name 医生查询工具 description 用于查询医生所属科室、职称、专长和出诊时间 def _run(self, doctor_name: str) - str: 查询指定医生的信息 doctor DOCTORS.get(doctor_name) if not doctor: return f未找到{doctor_name}的信息请确认医生姓名是否正确。 return (f{doctor_name}是{doctor[department]}的{doctor[title]}f专长于{doctor[specialty]}f出诊时间{,.join(doctor[available_days])})这些工具的设计严格遵循了我们之前提到的 Toolspec 规范明确的名称、功能描述和参数定义这是确保智能体能够正确使用工具的基础。定义智能体与任务接下来我们定义处理导诊任务的智能体和具体任务。创建agents/base_agent.pyfrom crewai import Agent from tools.hospital_tools import DepartmentQueryTool, DoctorQueryTool class HospitalGuideAgents: staticmethod def department_agent(): 创建科室导诊智能体 return Agent( role医院科室导诊专家, goal准确回答患者关于医院科室的各种问题包括位置、出诊时间和擅长治疗的疾病, backstory你是一位经验丰富的医院导诊专家熟悉医院所有科室的信息能够清晰准确地为患者提供科室相关咨询服务。, tools[DepartmentQueryTool()], verboseTrue, # 工程化Prompt的应用明确约束条件 allow_delegationFalse, max_iter3 ) staticmethod def doctor_agent(): 创建医生信息智能体 return Agent( role医生信息咨询专家, goal为患者提供医生的专业背景、专长和出诊时间等信息, backstory你负责管理医院所有医生的公开信息能够准确回答患者关于医生的咨询。, tools[DoctorQueryTool()], verboseTrue, allow_delegationFalse, max_iter3 )这里我们为不同的任务创建了专门的智能体体现了 角色专业化 的思想。每个智能体都有明确的 role、goal 和 backstory这正是我们工程级 Prompt 中强调的 角色层 设计。创建tasks/base_tasks.pyfrom crewai import Task class HospitalGuideTasks: staticmethod def query_department_task(agent, department_name): 创建查询科室信息的任务 return Task( descriptionf查询医院{department_name}的位置、出诊时间和擅长治疗的疾病, expected_outputf以清晰易读的格式列出{department_name}的位置、出诊时间和擅长治疗的疾病信息要准确、简洁避免使用专业术语让患者容易理解。, agentagent) staticmethod def query_doctor_task(agent, doctor_name): 创建查询医生信息的任务 return Task( descriptionf查询{doctor_name}的所属科室、职称、专长和出诊时间, expected_outputf以清晰易读的格式列出{doctor_name}的所属科室、职称、专长和出诊时间信息要准确、友好让患者能够快速了解医生情况。, agentagent)任务定义中我们明确了 description 和 expected_output这对应了工程级 Prompt 中的 目标层 和 输出格式层确保任务有明确的边界和可预期的结果。主程序实现最后我们实现主程序将智能体和任务组织起来并处理用户输入。创建main.pyimport os import re from dotenv import load_dotenv from crewai import Crew, Process from agents.base_agent import HospitalGuideAgents from tasks.base_tasks import HospitalGuideTasks # 加载环境变量 load_dotenv() def clean_input(text): 清理用户输入移除多余空格和标点 return re.sub(r[\s\.,。、;:], , text).strip() def extract_query(text, keywords): 从用户输入中提取查询关键词 for keyword in keywords: if keyword in text: query text.split(keyword, 1)[1].strip() return clean_input(query) return def main(): print( * 50) print(欢迎使用医院智能导诊系统) print(我可以为您提供以下服务) print(1. 查询科室信息例如查询内科、骨科在哪里) print(2. 查询医生信息例如查询张医生、李医生出诊时间) print(输入退出可随时结束服务) print( * 50) while True: try: user_input input(\n请输入您的问题).strip() # 处理退出命令 if user_input in [退出, exit, quit]: print(\n感谢使用医院智能导诊系统祝您健康) break # 清理输入并转换为小写以方便处理 cleaned_input clean_input(user_input).lower() # 判断查询类型并处理 if any(keyword in cleaned_input for keyword in [科, 科室]): # 提取科室名称 department extract_query(cleaned_input, [查询, 查, 找, 科室, 科]) if not department: print(\n请告诉我您想查询的科室名称例如查询内科 或 骨科在哪里) continue print(f\n正在为您查询{department}科室的信息...) agent HospitalGuideAgents.department_agent() task HospitalGuideTasks.query_department_task(agent, department) elif any(keyword in cleaned_input for keyword in [医生, 医师, 大夫]): # 提取医生姓名 doctor extract_query(cleaned_input, [查询, 查, 找, 医生, 医师, 大夫]) if not doctor: print(\n请告诉我您想查询的医生姓名例如查询张医生 或 李医生出诊时间) continue print(f\n正在为您查询{doctor}医生的信息...) agent HospitalGuideAgents.doctor_agent() task HospitalGuideTasks.query_doctor_task(agent, doctor) else: print(\n抱歉我暂时只能处理以下查询) print(- 科室查询例如查询内科、骨科在哪里) print(- 医生查询例如查询张医生、李医生出诊时间) continue # 创建并配置Crew crew Crew( agents[agent], tasks[task], processProcess.sequential, verboseTrue ) # 执行任务并处理结果 try: result crew.kickoff() print(\n * 50) print(查询结果) print(- * 50) print(result) print( * 50) except Exception as e: print(\n抱歉查询过程中出现错误) print(f错误信息: {str(e)}) print(请稍后再试或联系系统管理员。) except KeyboardInterrupt: print(\n\n检测到中断信号正在退出...) break except Exception as e: print(f\n发生未预期的错误: {str(e)}) print(请重试或联系系统管理员。) if __name__ __main__: main()主程序中我们实现了一个简单的输入解析器将用户的自然语言查询转换为结构化的任务这正是智能体五大核心模块中的 输入解析器 (Parser) 的基础实现。测试与运行现在我们可以运行程序测试基础功能python main.py尝试输入查询内科查询张医生程序会调用相应的智能体和工具返回查询结果。第 1 期实现的核心要点总结模块化设计将智能体、任务、工具分离为后续扩展奠定基础结构化 Prompt 应用在 Agent 和 Task 定义中应用了角色、目标、约束等要素工具标准化实现了符合 Toolspec 规范的查询工具简单输入解析将用户自然语言转换为结构化任务这些都是我们之前强调的智能体工程化原则的具体实践。第 1 期虽然简单但已经构建了一个完整的智能体工作流接收输入→解析意图→规划任务→调用工具→返回结果。结语第 1 期我们成功构建了一个基础的医院导诊智能体实现了科室和医生信息的查询功能。通过这个简单的例子我们看到了 CrewAI 框架如何帮助我们快速搭建智能体系统以及工程化原则在实际开发中的应用。在下一期中我们将增强这个智能体添加预约挂号功能和简单的症状分析能力重点展示智能体的工具调用能力和与外部系统的交互。敬请期待记住AI 不是玩具而是能显著提升效率的工具。通过这个系列实践我希望能帮助大家掌握智能体技术的工程化落地方法让 AI 真正为业务服务。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

河北住房建设厅网站wordpress 默认主题站点

Langchain-Chatchat在法律咨询中的应用场景设想 在律师事务所的某个深夜,一位年轻律师正焦头烂额地翻阅几十份劳动争议判例和法规汇编,只为回答客户一个看似简单的问题:“试用期辞退员工到底要不要赔偿?”这样的场景,在…

张小明 2025/12/29 19:49:02 网站建设

h5 小米网站模板支持wordpress免费下载

第一章:边缘设备 Agent 能耗问题的现状与挑战随着物联网(IoT)和边缘计算的快速发展,边缘设备上部署的 Agent 程序在数据采集、本地推理和远程协同中扮演着关键角色。然而,受限于设备的供电方式与硬件资源,A…

张小明 2025/12/29 19:12:52 网站建设

手机触屏网站开发教程重庆新闻频道

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个快速原型演示脚本,能在5分钟内展示Selenium IDE的核心价值。包含:1.极简安装指引 2.预录制好的测试案例(登录-操作-登出) 3.一键回放功能 4.实时显示…

张小明 2025/12/28 17:41:46 网站建设

网站改中文从百万到千万 网站怎么优化

深入了解 Samba:实现 Linux 与 Windows 的无缝融合 1. Samba 简介 在当今的网络环境中,Linux(及 UNIX)与 Windows 操作系统的共存是不可避免的。Samba 作为一套 Linux 应用程序,能够使用 Server Message Block(SMB)协议,实现了 Linux 和 Windows 机器在同一网络中的资…

张小明 2025/12/29 3:28:32 网站建设

徐州祥云做网站2015年做哪个网站能致富

Wan2.2-T2V-5B是否开放训练代码?最新进展披露 你有没有试过在深夜灵光一闪,想出一个绝妙的视频创意,却因为制作成本太高、周期太长而只能作罢? 我懂那种无力感。但现在,事情正在悄悄改变。 最近,一款名为 W…

张小明 2025/12/30 20:30:13 网站建设

p2p网站建设要点宁德seo公司

目录已开发项目效果实现截图开发技术介绍核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!已开发项目效果…

张小明 2025/12/31 12:54:44 网站建设