AI Agent开发入门笔记(1)

article/2025/9/17 3:10:36

目录

  • 1️⃣ 选择框架
  • 2️⃣开发操作
    • 导入Python库
    • 创建功能函数
    • 装载环境变量
    • 创建Agent
    • 运行Agent


学习参考资料:

  • 微软 AI Agents for Beginners
    • 代码仓库

1️⃣ 选择框架

semantic-kernel开发框架

  1. 导入库
  2. 创建功能函数(Agent 要完成什么功能)
  3. 创建客户端
    1. 加载环境变量(保存在.env,保证API_Key安全性)
    2. 配置基地址(URL
    3. 选择基座模型
  4. 创建Agent
    1. 将客户端配置到 service
    2. Agent 名称
  5. 运行Agent

可能头疼地方的解决方案:

  • 模型API付费:
    • 创建 Github Token
    • 基地址:https://models.inference.ai.azure.com/

2️⃣开发操作

导入Python库

import os 
from typing import Annotated
from openai import AsyncOpenAIfrom dotenv import load_dotenvfrom semantic_kernel.agents import ChatCompletionAgent, ChatHistoryAgentThread
from semantic_kernel.connectors.ai.open_ai import OpenAIChatCompletion
from semantic_kernel.functions import kernel_function

创建功能函数

import random   # Define a sample plugin for the sampleclass DestinationsPlugin:"""A List of Random Destinations for a vacation."""def __init__(self):# List of vacation destinationsself.destinations = ["Barcelona, Spain","Paris, France","Berlin, Germany","Tokyo, Japan","Sydney, Australia","New York, USA","Cairo, Egypt","Cape Town, South Africa","Rio de Janeiro, Brazil","Bali, Indonesia"]# Track last destination to avoid repeatsself.last_destination = None@kernel_function(description="Provides a random vacation destination.")def get_random_destination(self) -> Annotated[str, "Returns a random vacation destination."]:# Get available destinations (excluding last one if possible)available_destinations = self.destinations.copy()if self.last_destination and len(available_destinations) > 1:available_destinations.remove(self.last_destination)# Select a random destinationdestination = random.choice(available_destinations)# Update the last destinationself.last_destination = destinationreturn destination

装载环境变量

load_dotenv()
client = AsyncOpenAI(api_key=os.environ.get("GITHUB_TOKEN"), base_url="https://models.inference.ai.azure.com/",
)# Create an AI Service that will be used by the `ChatCompletionAgent`
chat_completion_service = OpenAIChatCompletion(# 模型可自行选择ai_model_id="gpt-4o-mini",async_client=client,
)

创建Agent

agent = ChatCompletionAgent(service=chat_completion_service, plugins=[DestinationsPlugin()],name="TravelAgent",instructions="You are a helpful AI Agent that can help plan vacations for customers at random destinations",
)

运行Agent

async def main():# Create a new thread for the agent# If no thread is provided, a new thread will be# created and returned with the initial responsethread: ChatHistoryAgentThread | None = Noneuser_inputs = ["Plan me a day trip.",]for user_input in user_inputs:print(f"# User: {user_input}\n")first_chunk = Trueasync for response in agent.invoke_stream(messages=user_input, thread=thread,):# 5. Print the responseif first_chunk:print(f"# {response.name}: ", end="", flush=True)first_chunk = Falseprint(f"{response}", end="", flush=True)thread = response.threadprint()# Clean up the threadawait thread.delete() if thread else Noneawait main()

在这里插入图片描述


http://www.hkcw.cn/article/hHnhPUvvIy.shtml

相关文章

实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.11 R语言解题

本文是实验设计与分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅珏生译) 第5章析因设计引导5.7节思考题5.11 R语言解题。主要涉及方差分析&#xff0c;正态假设检验&#xff0c;残差分析&#xff0c;交互作用图。 dataframe<-data.frame( densityc(570,565,…

Cadence学习笔记终章

目录 01 | 引 言 02 | 文章汇总 03 | 结 语 01 | 引 言 在历时一个半月后&#xff0c;终于更新完Cadence的原理图与PCB的设计流程&#xff1b; 本篇文章主要是将全部的Cadence学习文章汇总起来&#xff0c;以供朋友们以及自己日后进行翻阅。 02 | 文章汇总 文章从上至下的…

第100+41步 ChatGPT学习:R语言实现误判病例分析

本期是《第33步 机器学习分类实战&#xff1a;误判病例分析》的R版本。 尝试使用Deepseek-R1来试试写代码&#xff0c;效果还不错。 下面上R语言代码&#xff0c;以Xgboost为例&#xff1a; # 加载必要的库 library(caret) library(pROC) library(ggplot2) library(xgboost)…

实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.8 R语言解题

本文是实验设计与分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅珏生译) 第5章析因设计引导5.7节思考题5.8 R语言解题。主要涉及方差分析&#xff0c;正态假设检验&#xff0c;残差分析&#xff0c;交互作用图。 (a) dataframe<-data.frame( Lightc(580,568…

OptiStruct实例:消声器前盖ERP分析(2)RADSND基础理论

13.2 Radiated Sound Output Analysis( RADSND ) RADSND 方法通过瑞利积分来求解结构对外的辐射噪声。其基本思路是分为两个阶段&#xff0c;如图 13-12 所示。 图13-12 结构辐射噪声计算示意图 第一阶段采用有限元方法&#xff0c;通过频响分析(模态叠加法、直接法)工况计算结…

安装RHEL9.x操作系统

本案例需要的设备和软件 1.1台安装有Windows操作系统的计算机 2.RHEL 9的ISO映像文件一套 3.VMware Workstation 17.5 Pro软件一套 4.相关软件及镜像下载链接 VMware17.5&#xff0c;链接&#xff1a;https://pan.quark.cn/s/6208d19dbd48 提取码&#xff1a;22Wk rhel-9…

API:解锁网络世界的无限可能

“在数字化时代&#xff0c;互联网已成为我们生活、工作和学习中不可或缺的一部分。然而随着网络环境的日益复杂&#xff0c;访问限制、数据追踪、IP封锁等问题也随之而来。为了应对这些挑战&#xff0c;代理IP API应运而生&#xff0c;它不仅为我们提供了一种绕过限制、保护隐…

js 动画库、2048核心逻辑、面试题add[1][2][3]+4

1、js 动画库 web animation api &#xff08;1&#xff09;初始化代码 hmtl、css 部分 初始化全局背景黑色初始化黄色小球 js 部分 监听全局点击事件创建并添加元素 class"pointer" 的 div 标签 设置 left、top 位置监听动画结束事件&#xff0c;移除该元素 定位小…

Linux:Shell脚本基础

一、变量的命名规则 变量名称中只能包含数字、大小写字母以及下划线 二、变量的调用方法 三、字符的转义及引用 批量转义用“” 双引号是弱引用&#xff0c;单引号是强引用 四、用命令的执行结果定义变量 $1 $2 $3代表脚本后的第几个字节 $* $表示的是所有字节&#xff0c;但…

【Linux】深入解析:云服务器连接 XShell、Linux 目录结构和常用命令

XShell 使用阿里云服务器连接 XShell 使用Xshell连接阿里云服务器&#xff08;超详细截图版&#xff09;-CSDN博客 连接成功后 xshell 页面&#xff1a; 清空页面内容&#xff0c;直接输入 clear 即可&#xff1a; 关于 XShell 下的复制粘贴 复制&#xff1a;Ctrl Insert&…

掌握Java Runtime类的核心用法

Runtime 类的基本概念 Java 的 Runtime 类位于 java.lang 包中&#xff0c;用于与 Java 运行时环境&#xff08;JVM&#xff09;交互。每个 Java 应用程序都有一个 Runtime 实例&#xff0c;可以通过静态方法 Runtime.getRuntime() 获取。Runtime 类提供了与系统资源交互、执行…

如何设计自动化测试框架?

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 关于测试框架的好处&#xff0c;比如快速回归提高测试效率&#xff0c;提高测试覆盖率等这里就不讨论了。这里主要讨论自动化框架包含哪些内容&#xff0c;以及如…

历年西安交通大学计算机保研上机真题

2025西安交通大学计算机保研上机真题 2024西安交通大学计算机保研上机真题 2023西安交通大学计算机保研上机真题 在线测评链接&#xff1a;https://pgcode.cn/school 计算圆周率近似值 题目描述 根据公式 π / 4 1 − 1 / 3 1 / 5 − 1 / 7 … \pi / 4 1 - 1/3 1/5 - …

历年武汉大学计算机保研上机真题

2025武汉大学计算机保研上机真题 2024武汉大学计算机保研上机真题 2023武汉大学计算机保研上机真题 在线测评链接&#xff1a;https://pgcode.cn/school 分段函数计算 题目描述 写程序计算如下分段函数&#xff1a; 当 x > 0 x > 0 x>0 时&#xff0c; f ( x ) …

LearnOpenGL-笔记-其十

今天我们要进入高级光照的环节了&#xff1a; Advanced Lighting 之前的学习中&#xff0c;我们的光照模型采用的是比较简单的phong光照模型&#xff0c;也就是光照强度由环境光加上漫反射光加上镜面反射组成。 用一张图足以解释&#xff1a; 就这么简单&#xff0c;针对夹…

大话软工笔记—分离原理

1. 基本概念 1.1 定义 分离原理&#xff0c;将研究对象中符合相同设计方法的同类项进行分离、归集。 1.2 作用 分离原理的主要作用是&#xff1a; &#xff08;1&#xff09;降低了需求分析与软件设计的复杂程度。 &#xff08;2&#xff09;提出了对企业构成内容按照设计…

扫地机器人苦寻新引擎,大疆们却已攻入腹地

原创 科技新知 前沿科技组 作者丨江篱 编辑丨樱木、九黎 竞争激烈的扫地机器人赛道&#xff0c;迎来了新玩家。 据近日相关报道&#xff0c;大疆扫地机器人产品已开始量产&#xff0c;预计将于6月份发布。消息称大疆研发扫地机器人已超过四年&#xff0c;即将上市的产品是扫…

【Docker管理工具】部署Docker管理面板DweebUI

【Docker管理工具】部署Docker管理面板DweebUI 一、DweebUI介绍1.1 DweebUI 简介1.2 主要特点1.3 使用场景 二、本次实践规划2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载DweebUI镜像五、…

《系统集成项目管理工程师(第三版)》高效学习方法

文章目录 一、学习周期规划(总时长:3-4个月)二、每日学习时间分配表三、重难点突破策略1. 五星必考重点(占分60%+)2. 高频易错点四、高效记忆法(附实例)1. 口诀记忆法2. 联想记忆法3. 对比记忆法五、阶段目标检测六、十大管理高频整理一、十大管理ITTO高频考点表🔥 必…

新松机械臂 2001端口服务的客户端例程

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…