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

晋江网站建设哪家好优秀的网站有哪些内容

晋江网站建设哪家好,优秀的网站有哪些内容,简述建设iis网站的基本过程,1688会提供网站建设note LlamaIndex 实现 Agent 需要导入 ReActAgent 和 Function Tool,循环执行:推理、行动、观察、优化推理、重复进行。可以在 arize_phoenix 中看到 agent 的具体提示词,工具被装换成了提示词ReActAgent 使得业务自动向代码转换成为可能&am…

note

  • LlamaIndex 实现 Agent 需要导入 ReActAgentFunction Tool,循环执行:推理、行动、观察、优化推理、重复进行。可以在 arize_phoenix 中看到 agent 的具体提示词,工具被装换成了提示词
  • ReActAgent 使得业务自动向代码转换成为可能,只要有 API 模型就可以调用,很多业务场景都适用,LlamaIndex 提供了一些开源的工具实现,可以到官网查看。
  • 虽然 Agent 可以实现业务功能, 但是一个 Agent 不能完成所有的功能,这也符合软件解耦的设计原则,不同的 Agent 可以完成不同的任务,各司其职,Agent 之间可以进行交互、通信,类似于微服务。

文章目录

  • note
  • 一、LlamaIndex中agent的构建
  • 二、代码实践
  • Reference

一、LlamaIndex中agent的构建

步骤:

  • 定义工具函数(大模型会根据函数的注释来判断使用哪个函数来完成任务)
  • 把工具函数放入FunctionTool对象中,供Agent能够使用
  • LlamaIndex 实现 Agent 需要导入 ReActAgent 和 Function Tool
    • ReActAgent 通过结合推理(Reasoning)和行动(Acting)来创建动态的 LLM Agent 的框架。该方法允许 LLM 模型通过在复杂环境中交替进行推理步骤和行动步骤来更有效地执行任务。ReActAgent 将推理和动作形成了闭环,Agent 可以自己完成给定的任务。

一个典型的 ReActAgent 遵循以下循环:

  • 初始推理:代理首先进行推理步骤,以理解任务、收集相关信息并决定下一步行为。
  • 行动:代理基于其推理采取行动——例如查询API、检索数据或执行命令。
  • 观察:代理观察行动的结果并收集任何新的信息。
  • 优化推理:利用新信息,代理再次进行推理,更新其理解、计划或假设。
  • 重复:代理重复该循环,在推理和行动之间交替,直到达到满意的结论或完成任务。

二、代码实践

import os
from dotenv import load_dotenv# 加载环境变量
load_dotenv()
# 初始化变量
base_url = None
chat_model = None
api_key = None# 使用with语句打开文件,确保文件使用完毕后自动关闭
env_path = "/Users/guomiansheng/Desktop/LLM/llm_app/wow-agent/.env.txt"
with open(env_path, 'r') as file:# 逐行读取文件for line in file:# 移除字符串头尾的空白字符(包括'\n')line = line.strip()# 检查并解析变量if "base_url" in line:base_url = line.split('=', 1)[1].strip().strip('"')elif "chat_model" in line:chat_model = line.split('=', 1)[1].strip().strip('"')elif "ZHIPU_API_KEY" in line:api_key = line.split('=', 1)[1].strip().strip('"')# 打印变量以验证
print(f"base_url: {base_url}")
print(f"chat_model: {chat_model}")
print(f"ZHIPU_API_KEY: {api_key}")from openai import OpenAI
client = OpenAI(api_key = api_key,base_url = base_url
)
print(client)def get_completion(prompt):response = client.chat.completions.create(model="glm-4-flash",  # 填写需要调用的模型名称messages=[{"role": "user", "content": prompt},],)return response.choices[0].message.content# 用llama-index
from openai import OpenAI
from pydantic import Field  # 导入Field,用于Pydantic模型中定义字段的元数据
from llama_index.core.llms import (CustomLLM,CompletionResponse,LLMMetadata,
)
from llama_index.core.embeddings import BaseEmbedding
from llama_index.core.llms.callbacks import llm_completion_callback
from typing import List, Any, Generator# 定义OurLLM类,继承自CustomLLM基类
class OurLLM(CustomLLM):api_key: str = Field(default=api_key)base_url: str = Field(default=base_url)model_name: str = Field(default=chat_model)client: OpenAI = Field(default=None, exclude=True)  # 显式声明 client 字段def __init__(self, api_key: str, base_url: str, model_name: str = chat_model, **data: Any):super().__init__(**data)self.api_key = api_keyself.base_url = base_urlself.model_name = model_nameself.client = OpenAI(api_key=self.api_key, base_url=self.base_url)  # 使用传入的api_key和base_url初始化 client 实例@propertydef metadata(self) -> LLMMetadata:"""Get LLM metadata."""return LLMMetadata(model_name=self.model_name,)@llm_completion_callback()def complete(self, prompt: str, **kwargs: Any) -> CompletionResponse:response = self.client.chat.completions.create(model=self.model_name, messages=[{"role": "user", "content": prompt}])if hasattr(response, 'choices') and len(response.choices) > 0:response_text = response.choices[0].message.contentreturn CompletionResponse(text=response_text)else:raise Exception(f"Unexpected response format: {response}")@llm_completion_callback()def stream_complete(self, prompt: str, **kwargs: Any) -> Generator[CompletionResponse, None, None]:response = self.client.chat.completions.create(model=self.model_name,messages=[{"role": "user", "content": prompt}],stream=True)try:for chunk in response:chunk_message = chunk.choices[0].deltaif not chunk_message.content:continuecontent = chunk_message.contentyield CompletionResponse(text=content, delta=content)except Exception as e:raise Exception(f"Unexpected response format: {e}")llm = OurLLM(api_key=api_key, base_url=base_url, model_name=chat_model)
# print(llm)
# 测试模型是否能正常回答
response = llm.stream_complete("你是谁?")
for chunk in response:print(chunk, end="", flush=True)import sys
import os
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..")))
from llama_index.core.agent import ReActAgent
from llama_index.core.tools import FunctionTooldef multiply(a: float, b: float) -> float:"""Multiply two numbers and returns the product"""return a * bdef add(a: float, b: float) -> float:"""Add two numbers and returns the sum"""return a + b# 定义个类似天气预报的function
def get_weather(city: str) -> int:"""Gets the weather temperature of a specified city.Args:city (str): The name or abbreviation of the city.Returns:int: The temperature of the city. Returns 20 for 'NY' (New York),30 for 'BJ' (Beijing), and -1 for unknown cities."""# Convert the input city to uppercase to handle case-insensitive comparisonscity = city.upper()# Check if the city is New York ('NY')if city == "NY":return 20  # Return 20°C for New York# Check if the city is Beijing ('BJ')elif city == "BJ":return 30  # Return 30°C for Beijing# If the city is neither 'NY' nor 'BJ', return -1 to indicate unknown cityelse:return -1def main():multiply_tool = FunctionTool.from_defaults(fn=multiply)add_tool = FunctionTool.from_defaults(fn=add)# 创建ReActAgent实例agent = ReActAgent.from_tools([multiply_tool, add_tool], llm=llm, verbose=True)response = agent.chat("20+(2*4)等于多少?使用工具计算每一步")print(f"第一个agent的结果: ", response, "\n")weather_tool = FunctionTool.from_defaults(fn=get_weather)agent = ReActAgent.from_tools([multiply_tool, add_tool, weather_tool], llm=llm, verbose=True)response = agent.chat("纽约天气怎么样?")print(f"第二个agent的结果: ", response)if __name__ == "__main__":main()

输出的结果:
在这里插入图片描述

(1)计算的例子:

  • 将提问中的计算步骤分别利用了我们自定义的函数 add 和 multiply,比task1只能控制prompt情况更加自由了

(2)天气预报的例子

  • 可以在 arize_phoenix 中看到 agent 的具体提示词,工具被装换成了提示词
  • ReActAgent 使得业务自动向代码转换成为可能,只要有 API 模型就可以调用,很多业务场景都适用,LlamaIndex 提供了一些开源的工具实现,可以到官网查看。
  • 虽然 Agent 可以实现业务功能, 但是一个 Agent 不能完成所有的功能,这也符合软件解耦的设计原则,不同的 Agent 可以完成不同的任务,各司其职,Agent 之间可以进行交互、通信,类似于微服务。

Reference

[1] 官方文档:https://docs.cloud.llamaindex.ai/
[2] https://github.com/datawhalechina/wow-agent
[3] https://www.datawhale.cn/learn/summary/86

http://www.yayakq.cn/news/819585/

相关文章:

  • wordpress个人博客建站系统qq群怎么推广
  • 益阳市网站建设网站建设关键词
  • 黑龙江做网站网络全案推广
  • 主营网站建设会计记账行业门户网站建设方案
  • 四川建设厅网上查询网站网站logo怎么做才清晰
  • 自适应网站运动div如何设置的照片组合拼图
  • 自助建站是什么意思山东建设执业资格注册中心网站官网
  • 云南城市建设职业学校官方网站布吉建设网站
  • 建设银行etc的网站是哪个好网站的备案编号
  • 深圳常平网站建设制作公司个人博客网站开发历程
  • 企业推广网站门户资源分享网站模板
  • 海南网站策划做暧暧网站在线
  • 艾特思成都网站建设wordpress 无图插件
  • 自己做的网站如何让qq登录网站建设技巧讠金手指排名26
  • 使用wordpress做图站做网站的人会留下啥漏洞吗
  • dz系统怎么做地方网站shopify做国内网站
  • 中国银行全球门户网站东莞市住房和城乡建设局网站
  • 培训行业seo整站优化wordpress自动轮播图插件下载
  • 工程人才招聘网wordpress最好用的seo
  • 监控设备东莞网站建设人人商城小程序
  • 浙江网站建设有哪些公司注册资金需要实际缴纳吗
  • wordpress 回收站在哪个文件夹网站后台更新缓存失败
  • 网站开发需要的技术网站建设耂首先金手指
  • 一个人怎样做网站怎么做网站镜像
  • 深圳做响应式网站设计公司网站模板
  • 网站建设用到什么网站的流程
  • 你注册过的那些网站做外贸怎么打开国外网站
  • 做苗木选择哪个网站中国建设银行网站的社保板块在哪里
  • 品牌网站建设代理中山网站建设案例
  • 怎么做网页 网站制作网站快速收录软件