国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

AI Agents-2 | 手把手教你:從零開始打造AI智能體 原創

發布于 2025-3-24 10:36
瀏覽
0收藏

這個系列文章旨在為AI代理(AI Agent)提供全面的概述,深入研究其特征,組成部分和類型,同時探索其進化,挑戰和潛在的未來方向。

在??上一篇文章??中,我們深入探討了AI智能體的特性、組成、演變、挑戰以及未來可能性。今天,我們要更進一步,手把手教你用Python從零搭建一個AI智能體。這個智能體可以根據用戶輸入做出決策,選擇合適的工具,并執行相應任務。話不多說,讓我們立刻開始吧!

一、什么是AI智能體?

簡單來說,AI智能體就是一個能夠自主感知環境、做出決策并采取行動以實現特定目標的實體。智能體的復雜程度千差萬別,從簡單地對刺激做出反應的智能體,到能夠學習并隨時間適應的高級智能體,種類繁多。

常見的智能體類型有:

  1. 反應型智能體:直接對環境變化做出反應,沒有內部記憶。
  2. 基于模型的智能體:利用內部的世界模型來做出決策。
  3. 目標型智能體:根據特定目標規劃行動。
  4. 效用型智能體:基于效用函數評估潛在行動,以最大化結果。

具體例子包括聊天機器人、推薦系統和自動駕駛汽車,它們各自利用不同類型的智能體高效、智能地完成任務。

我們今天要搭建的智能體,核心組件包括:

  • 模型:智能體的“大腦”,負責處理輸入并生成響應。
  • 工具:智能體可以根據用戶請求執行的預定義函數。
  • 工具箱:智能體可以使用的工具集合。
  • 系統提示:指導智能體如何處理用戶輸入并選擇合適工具的指令集。

二、搭建智能體的準備工作

AI Agents-2 | 手把手教你:從零開始打造AI智能體-AI.x社區

在動手之前,先確保你的系統滿足以下條件:

(一)Python環境搭建

你需要安裝Python來運行AI智能體。以下是搭建環境的步驟:

1.安裝Python(推薦3.8及以上版本)訪問python.org,下載并安裝Python。驗證安裝是否成功:

python --version

2.創建虛擬環境(推薦)使用虛擬環境管理依賴項是個好習慣:

python -m venv ai_agents_env
source ai_agents_env/bin/activate  # Windows系統用:ai_agents_env\Scripts\activate

3.安裝依賴項進入項目目錄后,安裝所需的依賴項:

pip install -r requirements.txt

(二)本地部署Ollama

Ollama是一個用于高效運行和管理本地語言模型的工具。以下是安裝和配置步驟:

1.下載并安裝Ollama訪問Ollama官網,下載適合你操作系統的安裝包,并按照說明進行安裝。

2.驗證Ollama安裝運行以下命令檢查Ollama是否安裝成功:

ollama --version

3.拉取模型(如有需要)如果你的智能體實現需要特定模型,可以通過以下命令拉取:

ollama pull mistral  # 將“mistral”替換為你需要的模型

三、搭建智能體的具體步驟

AI Agents-2 | 手把手教你:從零開始打造AI智能體-AI.x社區

(一)搭建環境

除了Python,我們還需要安裝一些核心庫,比如??requests???、??json???和??termcolor???,此外,我們還會用到??dotenv??來管理環境變量。

pip install requests termcolor python-dotenv

(二)定義模型類

智能體需要一個模型來處理用戶輸入。我們將創建一個??OllamaModel??類,它通過本地API與模型交互并生成響應。以下是基礎實現:

from termcolor import colored
import os
from dotenv import load_dotenv
load_dotenv()

### 模型
import requests
import json

class OllamaModel:
    def __init__(self, model, system_prompt, temperature=0, stop=None):
        """
        初始化OllamaModel,設置模型名稱、系統提示、溫度和停止標記。
        """
        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):
        """
        根據用戶輸入生成響應。
        """
        payload = {
            "model": self.model,
            "format": "json",
            "prompt": prompt,
            "system": self.system_prompt,
            "stream": False,
            "temperature": self.temperature,
            "stop": self.stop
        }

        try:
            response = requests.post(
                self.model_endpoint, 
                headers=self.headers, 
                data=json.dumps(payload)
            )
            response_json = response.json()
            response_text = response_json['response']
            response_dict = json.loads(response_text)

            print(colored(f"\n\n模型響應:{response_dict}", "cyan"))
            return response_dict
        except requests.RequestException as e:
            return {"error": f"調用模型時出錯!{str(e)}"}

這個類通過模型名稱、系統提示、溫度和停止標記初始化,并通過??generate_text??方法向模型API發送請求并返回響應。

(三)為智能體創建工具

接下來,我們需要為智能體創建一些工具。這些工具是簡單的Python函數,用于執行特定任務。比如一個基礎計算器和一個字符串反轉器:

import json
import operator

def basic_calculator(input_str):
    """
    執行兩個數字的數值運算。
    """
    try:
        if isinstance(input_str, dict):
            input_dict = input_str
        else:
            input_dict = json.loads(input_str.replace("'", "\"").strip().strip("\""))
        
        ifnot 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()

        operations = {
            'add': operator.add,
            'plus': operator.add,
            'subtract': operator.sub,
            'minus': operator.sub,
            'multiply': operator.mul,
            'times': operator.mul,
            'divide': operator.truediv,
            'floor_divide': operator.floordiv,
            'modulus': operator.mod,
            'power': operator.pow
        }

        if operation notin operations:
            returnf"不支持的操作:'{operation}'。支持的操作有:{', '.join(operations.keys())}"

        if operation in ['divide', 'floor_divide', 'modulus'] and num2 == 0:
            return"除數不能為零!"

        result = operations[operation](num1, num2)
        returnf"結果是:{result:.6f}".rstrip('0').rstrip('.')
    except Exception as e:
        returnf"計算出錯:{str(e)}"

def reverse_string(input_string):
    """
    反轉字符串。
    """
    ifnot isinstance(input_string, str):
        return"輸入必須是字符串!"
    reversed_string = input_string[::-1]
    returnf"反轉后的字符串是:{reversed_string}"

(四)構建工具箱

??ToolBox??類用于存儲智能體可以使用的工具,并為每個工具提供描述:

class ToolBox:
    def __init__(self):
        """
        初始化工具箱。
        """
        self.tools_dict = {}

    def store(self, functions_list):
        """
        存儲工具函數的名稱和描述。
        """
        for func in functions_list:
            self.tools_dict[func.__name__] = func.__doc__
        return self.tools_dict

    def tools(self):
        """
        返回存儲的工具描述。
        """
        tools_str = ""
        for name, doc in self.tools_dict.items():
            tools_str += f"{name}: \"{doc}\"\n"
        return tools_str.strip()

這個類可以幫助智能體了解可用的工具及其功能。

(五)創建智能體類

智能體需要思考、選擇合適的工具并執行它。以下是??Agent??類的實現:

agent_system_prompt_template = """
你是一個智能AI助手,可以調用以下工具。你的回答必須始終是以下JSON格式:
{{
    "tool_choice": "工具名稱",
    "tool_input": "工具輸入"
}}

工具列表及使用場景:

1. basic_calculator:用于任何數學計算
   - 輸入格式:{{"num1": 數字, "num2": 數字, "operation": "加/減/乘/除"}}
   - 示例:
     輸入:"15加7"
     輸出:{{"tool_choice": "basic_calculator", "tool_input": {{"num1": 15, "num2": 7, "operation": "add"}}}}

2. reverse_string:用于任何文本反轉請求
   - 輸入格式:直接輸入需要反轉的文本
   - 示例:
     輸入:"反轉'Hello'"
     輸出:{{"tool_choice": "reverse_string", "tool_input": "Hello"}}

3. no_tool:用于一般性對話或問題
   - 示例:
     輸入:"你是誰?"
     輸出:{{"tool_choice": "no_tool", "tool_input": "我是你的AI助手,可以幫你計算數學題、反轉文本或回答問題。"}}

請記住:你的回答必須始終是有效的JSON格式,包含"tool_choice"和"tool_input"字段。
"""

class Agent:
    def __init__(self, tools, model_service, model_name, stop=None):
        """
        初始化智能體,傳入工具列表和模型。
        """
        self.tools = tools
        self.model_service = model_service
        self.model_name = model_name
        self.stop = stop

    def prepare_tools(self):
        """
        準備工具并返回工具描述。
        """
        toolbox = ToolBox()
        toolbox.store(self.tools)
        tool_descriptions = toolbox.tools()
        return tool_descriptions

    def think(self, prompt):
        """
        根據用戶輸入生成響應。
        """
        tool_descriptions = self.prepare_tools()
        agent_system_prompt = agent_system_prompt_template.format(tool_descriptinotallow=tool_descriptions)

        model_instance = self.model_service(
            model=self.model_name,
            system_prompt=agent_system_prompt,
            temperature=0,
            stop=self.stop
        )

        agent_response_dict = model_instance.generate_text(prompt)
        return agent_response_dict

    def work(self, prompt):
        """
        解析響應并執行工具。
        """
        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

這個類有三個主要方法:

  1. **??prepare_tools??**:存儲工具并返回工具描述。
  2. **??think??**:根據用戶輸入選擇合適的工具。
  3. **??work??**:執行選定的工具并返回結果。

(六)運行智能體

最后,我們將所有組件組合起來,運行智能體。在腳本的主部分,初始化智能體并開始接受用戶輸入:

if __name__ == "__main__":
    print("\n歡迎使用AI智能體!輸入'exit'退出。")
    print("你可以讓我:")
    print("1. 進行數學計算(例如:'15加7')")
    print("2. 反轉字符串(例如:'反轉hello world')")
    print("3. 回答一般性問題\n")

    tools = [basic_calculator, reverse_string]
    model_service = OllamaModel
    model_name = "llama2"# 可以替換為其他模型,如'mistral'、'codellama'等
    stop = "<|eot_id|>"

    agent = Agent(tools=tools, model_service=model_service, model_name=model_name, stop=stop)

    whileTrue:
        prompt = input("問我任何問題:")
        if prompt.lower() == "exit":
            break

        agent.work(prompt)

四、總結

通過這篇文章,我們從零開始搭建了一個AI智能體。完成了環境搭建、模型定義、工具創建、工具箱構建,并最終讓智能體運行起來。這種結構化的搭建方式為創建智能、交互式的智能體奠定了堅實基礎。

隨著AI智能體的不斷發展,它們的應用場景將擴展到更多行業,推動效率和創新。未來,我們將繼續探索更多功能,讓智能體變得更強大、更智能。敬請期待!


本文轉載自公眾號Halo咯咯    作者:基咯咯

原文鏈接:??https://mp.weixin.qq.com/s/Yq7FckZgv-zgj0KIu3xnVg??

?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
已于2025-3-24 10:37:32修改
收藏
回復
舉報
回復
相關推薦
欧美亚洲日本精品| 暖暖日本在线观看| 成人黄色大片在线观看 | 久久91亚洲精品中文字幕奶水| 99蜜桃臀久久久欧美精品网站| 色综合视频一区二区三区44| 肉色丝袜一区二区| 亚洲第一网站男人都懂| 自由日本语热亚洲人| 《视频一区视频二区| 成人拍拍拍免费视频网站| 国产精品国产成人国产三级| 毛片视频免费| 欧美午夜www高清视频| 亚洲视频精品在线观看| 欧美亚洲一区二区三区四区| 色图在线观看| 日韩精品免费一线在线观看| 韩国精品主播一区二区在线观看| 一区二区成人av| 日韩av综合| 国产精品第8页| 欧美精品不卡| 午夜精品一区二区三区在线观看| 国产aⅴ精品一区二区三区色成熟| 欧美午夜性视频| 国产精品亲子伦对白| 中文字幕在线网| 欧美精品视频www在线观看| 捆绑调教日本一区二区三区| 中文字幕成人在线| 日韩高清影视在线观看| 高清视频在线观看一区| 精品一区二区久久久| 五月婷婷之综合激情| 欧美视频在线观看免费网址| 国产拍在线视频| 午夜精品久久17c| 伊人久久大香线蕉综合热线| 99亚洲精品视频| 国产精品白丝在线| 91涩漫在线观看| 在线日韩日本国产亚洲| 五月综合久久| 日本不卡在线播放| 欧美激情一区二区三区蜜桃视频| 可以在线观看的av| 亚洲欧美国产另类| 国产精品传媒| 久久99精品久久久久久青青日本| 国产精品乡下勾搭老头1| 色www免费视频| 欧美精品第1页| 日韩三级av高清片| 欧美黑人做爰爽爽爽| 蜜月aⅴ免费一区二区三区| 香蕉久久夜色精品国产使用方法 | 日韩暖暖在线视频| 亚洲国产片色| 精品国产一二三四区| 午夜成人免费视频| 国产成人精品亚洲日本在线观看| 成人h片在线播放免费网站| 久久精品人人| 窝窝九色成人影院| 亚洲国产精彩中文乱码av| 人人精品视频| 一区二区三区三区在线| 一区二区三区四区中文字幕| 色老头在线一区二区三区| 国产精品自产拍在线观看中文| 国产精品影视在线观看| 国产呻吟对白刺激无套视频在线| 亚洲人免费视频| 黄色日韩在线| 免费一级电影| 欧美xxxx在线观看| 久久看人人摘| 欧美成人黑人猛交| 亚洲国产成人av在线| 888久久久| www.99re.av| 正在播放欧美视频| 麻豆精品91| 日本免费一区二区三区最新| 欧美激情网友自拍| 国产一区二区福利| 国产黄在线观看| 欧美性做爰毛片| av电影天堂一区二区在线| 女子免费在线观看视频www| 国产中文字幕91| 国产精品青草综合久久久久99| 超碰aⅴ人人做人人爽欧美| 国产精品制服诱惑| 亚洲综合免费观看高清完整版在线| 日韩国产一二三区| 杨幂一区欧美专区| 91麻豆精品国产91| 欧美激情在线| 亚洲一区在线日韩在线深爱| 青青精品视频播放| 中文字幕高清不卡| 久久亚洲国产精品尤物| 黄色高清视频网站| 日韩片之四级片| 亚洲人妖在线| 3p在线观看| 国产免费一区二区三区| 色婷婷久久久久swag精品| 日韩免费av| 中国一级特黄毛片大片| 26uuu亚洲国产精品| 国产三级久久久| 中文字幕一区图| 天天操天天爱天天爽| 欧美成aaa人片免费看| 99re这里都是精品| 91成人app| 亚洲五月天综合| 韩剧1988免费观看全集| 中文字幕乱码日本亚洲一区二区| 午夜久久av| 北条麻妃av高潮尖叫在线观看| 欧美成人国产va精品日本一级| 91一区在线观看| 香蕉成人app| 一插菊花综合| 成人在线一区二区三区| 国产精品自拍三区| 大胆人体一区| 九色综合国产一区二区三区| 久久久久国产精品人| 久久成人久久鬼色| 亚欧在线免费观看| 欧美成人精品三级在线观看| wwwwww.欧美系列| 99国精产品一二二线| 老鸭窝毛片一区二区三区| 麻豆视频网站在线观看| 欧美一区二区综合| 精品国产91乱码一区二区三区| 老妇喷水一区二区三区| 国产亚av手机在线观看| 热这里只有精品| 中文字幕日韩高清| 欧美国产乱子伦| 国产精品亚洲片在线播放| 日本五码在线| 日本一区二区三区视频在线播放| 亚洲黄色av网站| 91蜜桃视频在线| 国产乱码精品一区二区亚洲| 国产资源在线播放| 亚洲精品国产精品国自产观看| 一区二区欧美在线| 欧美国产精品劲爆| 999久久久91| 欧美家庭影院| 波多野结衣作品集| 国产九九精品视频| 在线播放91灌醉迷j高跟美女 | 久久全国免费视频| 性做久久久久久免费观看 | 国内精品久久国产| 精品亚洲一区二区| 国产精品久久久久久久久免费丝袜| 五月天激情综合网| 二区三区不卡| 好男人社区在线视频| 免费试看一区| 久久久精品一区二区| 福利一区视频在线观看| 激情深爱一区二区| 米奇777超碰欧美日韩亚洲| 国产日产一区二区三区| 青青草视频国产| 在线中文免费视频| 桃色一区二区| 亚洲乱码日产精品bd| 中文字幕一区二区三区在线视频| 五月天国产在线| 黄色免费观看网站| 亚洲成色www久久网站| 91av在线播放| 精品国产网站在线观看| 国产精品久久久久毛片软件| 99国产一区| 精品视频在线你懂得| 欧美人与性动交α欧美精品济南到 | 亚洲成av人片在线| 国产成人av电影| 欧美成人69| 亚洲小说春色综合另类电影| 黄色国产网站在线播放| www.1024| 免费国产黄色网址| 日本欧美精品久久久| 国产日韩欧美在线| 欧美乱妇高清无乱码|