当前位置: 首页 > article >正文

基于Swarm的大模型应用:一个天气助手

本次实践主要是基于open Ai 的swarm与deepSeek模型,定制一个大模型智能体,帮助我们认识swam(多智能体写作文)以及如何使用;

1 deekSeeK

注册:DeepSeek

申请自己的apiKey:******;

注意:model="deepseek-chat", 这一个参数我们需要在OpenAi 中配置;

from openai import OpenAI

client = OpenAI(api_key="<DeepSeek API Key>", base_url="https://api.deepseek.com")

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
        {"role": "system", "content": "You are a helpful assistant"},
        {"role": "user", "content": "Hello"},
    ],
    stream=False
)

print(response.choices[0].message.content)

2 python环境

注意:安装swarm需要依赖于3.10.0版本;

pip install git+https://github.com/openai/swarm.git

3 代码

swarm:是一个集群

Agent:是一个具体的工作流;

import requests
import os

from swarm import Swarm, Agent
import openai



def get_weather(latitude: float, longitude: float) -> str:
    """
    使用Open-Meteo API获取给定坐标的当前天气。

    参数:
    latitude (float): 纬度
    longitude (float): 经度

    返回:
    str: 包含当前温度和风速的天气信息JSON字符串
    """
    url = f"https://api.open-meteo.com/v1/forecast?latitude={latitude}&longitude={longitude}&current=temperature_2m,wind_speed_10m"
    
    response = requests.get(url)
    if response.status_code == 200:
        data = response.json()
        current = data['current']
        return str(current)  # 返回JSON字符串
    else:
        return '{"error": "无法获取天气数据"}'

def get_coordinates(location: str) -> str:
    """
    获取给定位置名称的坐标。

    参数:
    location (str): 位置名称

    返回:
    str: 包含纬度和经度的JSON字符串
    """
    #print('11111111')
    coordinates = {
        "纽约": (40.7128, -74.0060),
        "伦敦": (51.5074, -0.1278),
        "东京": (35.6762, 139.6503),
        "巴黎": (48.8566, 2.3522),
        "柏林": (52.5200, 13.4050)
    }
    lat, lon = coordinates.get(location.lower(), (0, 0))
    print(f"获取当前的时间:{location}, {lat}")
    return f'{{"latitude": {lat}, "longitude": {lon}}}'

from openai import OpenAI
# 自己api_key

open_ai = OpenAI(api_key="*****"
                 ,base_url='https://api.deepseek.com/')

client = Swarm(client=open_ai)

weather_agent = Agent(
    name="天气助手",
    instructions="""
    你是一个有帮助的天气助手。当被问到特定位置的天气时:
    1. 使用get_coordinates函数获取该位置的坐标。
    2. 使用get_weather函数获取天气数据。
    3. 解析返回的JSON数据,提供一个友好的回复,包含天气信息。
    如果无法识别该位置,礼貌地通知用户并建议他们尝试一个主要城市。
    """,
    model='deepseek-chat', # 这个参数很重要,不然总是报错
    functions=[get_coordinates, get_weather]
)

def run_weather_query(query: str) -> str:
    """
    运行天气查询并返回结果。

    参数:
    query (str): 用户的天气查询

    返回:
    str: Agent的响应
    """
    messages = [{"role": "user", "content": query}]
    #print("11111222222")
    response = client.run(agent=weather_agent, messages=messages)
    return response.messages[-1]["content"]

# 使用示例
print(run_weather_query("纽约的天气怎么样?"))


http://www.kler.cn/a/465876.html

相关文章:

  • Kotlin 委托
  • 【业务场景】sql server从Windows迁移到Linux
  • 框架Tensorflow2
  • Linux之ARM(MX6U)裸机篇----9.GPIO中断实验
  • 通义千问API KEY操作指南
  • java实验4 反射机制
  • uniapp Stripe 支付
  • 解决ubuntu服务器SSH连接卡顿,连上后命令输入也是卡顿以及如何在Ubuntu上杀死不断重启的进程。
  • 【连续3届JPCS出版,EI稳定检索!】第四届能源利用与自动化国际学术会议(ICEUA 2025)
  • [cg] android studio 无法调试cpp问题
  • SQL中的REGEXP正则表达式使用指南
  • 抢先体验:人大金仓数据库管理系统KingbaseES V9 最新版本 CentOS 7.9 部署体验
  • Debian安装配置MariaDB
  • 安卓系统主板_迷你安卓主板定制开发_联发科MTK安卓主板方案
  • 期权懂|期权入门知识:平值期权的杠杆有多少倍数?
  • 基于微信小程序的自修室预约系统
  • Nginx 配置 SSL(HTTPS)详解
  • JVM常见排查问题的命令及可视化工具
  • 以一个实际例子来学习Linux驱动程序开发之“设备类”的相关知识【利用设备类实现对同一设备类下的多个LED灯实现点亮或关闭】
  • 服务器迁移中心——“工作组迁移”使用指南
  • 开源Material Design WPF UI 控件库简单上手
  • 【Python其他生成随机字符串的方法】
  • 《特征工程:自动化浪潮下的坚守与变革》
  • “AI智慧教学系统:开启个性化教育新时代
  • 【QT】增删改查 XML 文件的类
  • 计算机网络•自顶向下方法:链路层介绍