2026/4/3 17:57:22
网站建设
项目流程
建站公司一般怎么获客,企业自助网站建设,seo营销型网站设计要点,安阳昨天发生的事件1. 什么是智能体#xff1f;
智能体#xff08;Agents#xff09;是一种能够感知环境、做出决策并采取行动来实现特定目标的自主实体。智能体的复杂程度各不相同#xff0c;从简单的响应式智能体#xff08;对刺激直接做出反应#xff09;到更高级的智能体#xff08;能…1. 什么是智能体智能体Agents是一种能够感知环境、做出决策并采取行动来实现特定目标的自主实体。智能体的复杂程度各不相同从简单的响应式智能体对刺激直接做出反应到更高级的智能体能够学习和适应都有。常见的智能体类型包括响应式智能体直接对环境变化作出反应没有内部记忆。基于模型的智能体使用内部世界模型来做决策。基于目标的智能体基于特定目标规划行动。基于效用的智能体通过效用函数评估潜在行动以优化结果。智能体的例子包括聊天机器人、推荐系统和自动驾驶汽车它们各自使用不同类型的智能体来高效智能地执行任务。我们智能体的核心组件有模型智能体的大脑负责处理输入并生成响应。工具智能体可以根据用户请求执行的预定义函数。工具箱智能体可用工具的集合。系统提示指导智能体如何处理用户输入并选择合适工具的指令集。2. 实现现在让我们卷起袖子开始构建吧构建智能体2.1 前提条件在运行代码之前确保你的系统满足以下前提条件1. Python环境设置你需要安装Python来运行AI智能体。按照以下步骤设置环境安装Python如果尚未安装从python.org下载并安装Python推荐3.8版本验证安装plaintextpython --version创建虚拟环境推荐最好使用虚拟环境来管理依赖项plaintextpython -m venv ai_agents_envsource ai_agents_env/bin/activate # Windows上使用ai_agents_env\Scripts\activate安装所需依赖导航到仓库目录并安装依赖plaintextpip install -r requirements.txt2. 在本地设置OllamaOllama用于高效运行和管理本地语言模型。按照以下步骤安装和配置下载并安装Ollama访问Ollama官方网站并下载适合你操作系统的安装程序按照平台相应指导进行安装验证Ollama安装运行以下命令检查Ollama是否正确安装plaintextollama --version拉取模型如需要某些智能体实现可能需要特定模型。你可以使用以下命令拉取模型ollama pull mistral # 将mistral替换为所需模型我查了下有些模型是在ollama部署下不支持工具调用的。2.2 实现步骤步骤1设置环境除了Python我们还需要安装一些基本库。对于本教程我们将使用requests、json和termcolor。此外我们将使用dotenv来管理环境变量。pip install requests termcolor python-dotenv步骤2定义模型类首先我们需要一个处理用户输入的模型。我们将创建一个OllamaModel类它与本地API交互以生成响应。基本实现如下from termcolor import coloredimport osfrom dotenv import load_dotenvload_dotenv()### Modelsimport requestsimport jsonimport operatorclass OllamaModel: def __init__(self, model, system_prompt, temperature0, stopNone): 使用给定参数初始化OllamaModel。 参数: model (str): 要使用的模型名称。 system_prompt (str): 要使用的系统提示。 temperature (float): 模型的温度设置。 stop (str): 模型的停止令牌。 self.model_endpoint http://localhost:11434/api/generate self.temperature temperature self.model model self.system_prompt system_prompt self.headers {Content-Type: application/json} self.stop stop def generate_text(self, prompt): 根据提供的提示从Ollama模型生成响应。 参数: prompt (str): 要生成响应的用户查询。 返回: dict: 模型响应的字典形式。 payload { model: self.model, format: json, prompt: prompt, system: self.system_prompt, stream: False, temperature: self.temperature, stop: self.stop } try: request_response requests.post( self.model_endpoint, headersself.headers, datajson.dumps(payload) ) print(请求响应, request_response) request_response_json request_response.json() response request_response_json[response] response_dict json.loads(response) print(f\n\nOllama模型的响应: {response_dict}) return response_dict except requests.RequestException as e: response {error: f调用模型时出错{str(e)}} return response这个类以模型名称、系统提示、温度和停止令牌进行初始化。generate_text方法向模型API发送请求并返回响应。步骤3为智能体创建工具下一步是创建我们的智能体可以使用的工具。这些工具是执行特定任务的简单Python函数。以下是一个基本计算器和字符串反转器的例子def basic_calculator(input_str): 根据输入字符串或字典对两个数字执行数学运算。 参数: input_str (str或dict): 可以是表示包含num1、num2和operation键的字典的JSON字符串 或直接是字典。例如{num1: 5, num2: 3, operation: add} 或 {num1: 67869, num2: 9030393, operation: divide} 返回: str: 操作结果的格式化字符串。 异常: Exception: 如果在操作过程中发生错误例如除以零。 ValueError: 如果请求了不支持的操作或输入无效。 try: # 处理字典和字符串输入 if isinstance(input_str, dict): input_dict input_str else: # 清理并解析输入字符串 input_str_clean input_str.replace(, \) input_str_clean input_str_clean.strip().strip(\) input_dict json.loads(input_str_clean) # 验证必需字段 if not all(key in input_dict for key in [num1, num2, operation]): return 错误输入必须包含num1、num2和operation num1 float(input_dict[num1]) # 转换为浮点数以处理小数 num2 float(input_dict[num2]) operation input_dict[operation].lower() # 不区分大小写 except (json.JSONDecodeError, KeyError) as e: return 输入格式无效。请提供有效的数字和操作。 except ValueError as e: return 错误请提供有效的数值。 # 定义支持的操作及错误处理 operations { add: operator.add, plus: operator.add, # add的替代词 subtract: operator.sub, minus: operator.sub, # subtract的替代词 multiply: operator.mul, times: operator.mul, # multiply的替代词 divide: operator.truediv, floor_divide: operator.floordiv, modulus: operator.mod, power: operator.pow, lt: operator.lt, le: operator.le, eq: operator.eq, ne: operator.ne, ge: operator.ge, gt: operator.gt } # 检查操作是否支持 if operation not in operations: return f不支持的操作{operation}。支持的操作有{, .join(operations.keys())} try: # 处理除以零的特殊情况 if (operation in [divide, floor_divide, modulus]) and num2 0: return 错误不允许除以零 # 执行操作 result operations[operation](num1, num2) # 根据类型格式化结果 if isinstance(result, bool): result_str 真 if result else 假 elif isinstance(result, float): # 处理浮点精度 result_str f{result:.6f}.rstrip(0).rstrip(.) else: result_str str(result) return f答案是{result_str} except Exception as e: return f计算过程中出错{str(e)}def reverse_string(input_string): 反转给定字符串。 参数: input_string (str): 要反转的字符串。 返回: str: 反转后的字符串。 # 检查输入是否为字符串 if not isinstance(input_string, str): return 错误输入必须是字符串 # 使用切片反转字符串 reversed_string input_string[::-1] # 格式化输出 result f反转后的字符串是{reversed_string} return result这些函数设计用于根据提供的输入执行特定任务。basic_calculator处理算术运算而reverse_string则反转给定的字符串。步骤4构建工具箱ToolBox类存储智能体可以使用的所有工具并为每个工具提供描述class ToolBox: def __init__(self): self.tools_dict {} def store(self, functions_list): 存储列表中每个函数的字面名称和文档字符串。 参数: functions_list (list): 要存储的函数对象列表。 返回: dict: 以函数名为键其文档字符串为值的字典。 for func in functions_list: self.tools_dict[func.__name__] func.__doc__ return self.tools_dict def tools(self): 以文本字符串形式返回store中创建的字典。 返回: str: 存储的函数及其文档字符串的字典以文本字符串形式。 tools_str for name, doc in self.tools_dict.items(): tools_str f{name}: \{doc}\\n return tools_str.strip()这个类将帮助智能体了解哪些工具可用以及每个工具的功能。步骤5创建智能体类智能体需要思考、决定使用哪个工具并执行它。以下是智能体类agent_system_prompt_template 你是一个拥有特定工具访问权限的智能AI助手。你的回答必须始终使用这种JSON格式{{ tool_choice: 工具名称, tool_input: 给工具的输入}}工具及其使用时机1. basic_calculator用于任何数学计算 - 输入格式{{num1: 数字, num2: 数字, operation: add/subtract/multiply/divide}} - 支持的操作add/plus, subtract/minus, multiply/times, divide - 输入和输出示例 输入计算15加7 输出{{tool_choice: basic_calculator, tool_input: {{num1: 15, num2: 7, operation: add}}}} 输入100除以5等于多少 输出{{tool_choice: basic_calculator, tool_input: {{num1: 100, num2: 5, operation: divide}}}}2. reverse_string用于任何涉及文本反转的请求 - 输入格式仅作为字符串的要反转的文本 - 当用户提到反转、倒序或要求反转文本时始终使用此工具 - 输入和输出示例 输入你好世界的反转是什么 输出{{tool_choice: reverse_string, tool_input: 你好世界}} 输入Python反过来是什么 输出{{tool_choice: reverse_string, tool_input: Python}}3. no tool用于一般对话和问题 - 输入和输出示例 输入你是谁 输出{{tool_choice: no tool, tool_input: 我是一个AI助手可以帮你进行计算、反转文本以及回答问题。我可以执行数学运算和反转字符串。今天我能为你做些什么}} 输入你好吗 输出{{tool_choice: no tool, tool_input: 我运行得很好谢谢你的关心我可以帮你进行计算、文本反转或回答任何问题。}}严格规则1. 关于身份、能力或感受的问题 - 始终使用no tool - 提供完整、友好的回应 - 提及你的能力2. 对于任何文本反转请求 - 始终使用reverse_string - 仅提取要反转的文本 - 删除引号、反转等额外文本3. 对于任何数学运算 - 始终使用basic_calculator - 提取数字和操作 - 将文本数字转换为数字这是你的工具列表及其描述{tool_descriptions}记住你的回应必须始终是带有tool_choice和tool_input字段的有效JSON。class Agent: def __init__(self, tools, model_service, model_name, stopNone): 使用工具列表和模型初始化智能体。 参数: tools (list): 工具函数列表。 model_service (class): 带有generate_text方法的模型服务类。 model_name (str): 要使用的模型名称。 self.tools tools self.model_service model_service self.model_name model_name self.stop stop def prepare_tools(self): 在工具箱中存储工具并返回其描述。 返回: str: 工具箱中存储的工具描述。 toolbox ToolBox() toolbox.store(self.tools) tool_descriptions toolbox.tools() return tool_descriptions def think(self, prompt): 使用系统提示模板和工具描述在模型上运行generate_text方法。 参数: prompt (str): 要生成回答的用户查询。 返回: dict: 模型响应的字典形式。 tool_descriptions self.prepare_tools() agent_system_prompt agent_system_prompt_template.format(tool_descriptionstool_descriptions) # 创建带有系统提示的模型服务实例 if self.model_service OllamaModel: model_instance self.model_service( modelself.model_name, system_promptagent_system_prompt, temperature0, stopself.stop ) else: model_instance self.model_service( modelself.model_name, system_promptagent_system_prompt, temperature0 ) # 生成并返回响应字典 agent_response_dict model_instance.generate_text(prompt) return agent_response_dict def work(self, prompt): 解析从think返回的字典并执行适当的工具。 参数: prompt (str): 要生成回答的用户查询。 返回: 执行适当工具的响应如果没有找到匹配的工具则返回tool_input。 agent_response_dict self.think(prompt) tool_choice agent_response_dict.get(tool_choice) tool_input agent_response_dict.get(tool_input) for tool in self.tools: if tool.__name__ tool_choice: response tool(tool_input) print(colored(response, cyan)) return print(colored(tool_input, cyan)) return这个类有三个主要方法prepare_tools存储并返回工具的描述。think根据用户提示决定使用哪个工具。work执行所选工具并返回结果。步骤6运行智能体最后让我们把所有内容放在一起并运行我们的智能体。在脚本的主要部分初始化智能体并开始接受用户输入# 示例用法if __name__ __main__: 使用此智能体的说明 你可以尝试的示例查询 1. 计算器操作 - 计算15加7 - 100除以5等于多少 - 把23乘以4 2. 字符串反转 - 反转你好世界这个词 - 你能反转Python编程吗 3. 一般问题将得到直接回应 - 你是谁 - 你能帮我做什么 Ollama命令在终端中运行 - 检查可用模型 ollama list - 检查运行中的模型ps aux | grep ollama - 列出模型标签 curl http://localhost:11434/api/tags - 拉取新模型 ollama pull mistral - 运行模型服务器 ollama serve tools [basic_calculator, reverse_string] # 取消下面的注释以使用OpenAI # model_service OpenAIModel # model_name gpt-3.5-turbo # stop None # 使用Ollama的llama2模型 model_service OllamaModel model_name llama2 # 可以更改为其他模型如mistral、codellama等 stop |eot_id| agent Agent(toolstools, model_servicemodel_service, model_namemodel_name, stopstop) print(\n欢迎使用AI智能体输入exit退出。) print(你可以让我) print(1. 执行计算例如计算15加7) print(2. 反转字符串例如反转你好世界) print(3. 回答一般问题\n) while True: prompt input(问我任何问题) if prompt.lower() exit: break agent.work(prompt)实测效果如下3. 总结在这篇博文中我们探索了智能体的概念并一步步实现了它。我们设置了环境定义了模型创建了基本工具并构建了一个结构化的工具箱来支持我们智能体的功能。最后我们通过运行智能体将所有内容整合在一起。这种结构化方法为构建能够自动执行任务并做出明智决策的智能交互式智能体提供了坚实的基础。随着AI智能体不断发展它们的应用将扩展到各个行业推动效率和创新。敬请关注更多见解和改进将你的AI智能体提升到新的水平学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】