农村电商网站建设方案学习前端开发的网站

diannao/2025/10/18 21:44:55/文章来源:
农村电商网站建设方案,学习前端开发的网站,互联网信息服务业务经营许可证,网站建设的意义和作用【Langchain Agent研究】SalesGPT项目介绍#xff08;一#xff09;-CSDN博客 上节课#xff0c;我们介绍了SalesGPT他的业务流程和技术架构#xff0c;这节课#xff0c;我们来关注一下他的项目整体结构、poetry工具和一些工程项目相关的设计。 项目整体结构介绍 我们把…【Langchain Agent研究】SalesGPT项目介绍一-CSDN博客 上节课我们介绍了SalesGPT他的业务流程和技术架构这节课我们来关注一下他的项目整体结构、poetry工具和一些工程项目相关的设计。 项目整体结构介绍 我们把整个项目从git上拉下来之后来看一下它的整体工程结构 这里面所有的文件其中最最重要的是salesgpt这个文件夹打开这个文件夹可以看到里面的python文件 回想一下我们旅游聊天机器人【LangchainStreamlit】旅游聊天机器人-CSDN博客里面的工程结构和这个有些类似是不是只不过多了logger、parsers等其他的python文件这些我们后面会涉及到 所以后面我们会重点研究salesgpt文件夹里面的东西。我们在看salesGPT整个工程结构的时候发现一个问题就是我们找不到一般项目的requirements.txt但是我们发现了这两个文件 我们打开pyproject.toml看看里面的代码 [tool.poetry] name SalesGPT version 0.1.1 description SalesGPT - Your Context-Aware AI Sales Assistant authors [Filip Michalsky ] license Apache-2.0 readme README.md homepage https://github.com/filip-michalsky/SalesGPT repository https://github.com/filip-michalsky/SalesGPT classifiers [Development Status :: 4 - Beta,Intended Audience :: Developers,License :: OSI Approved :: Apache Software License,Programming Language :: Python :: 3,Programming Language :: Python :: 3 :: Only,Programming Language :: Python :: 3.8,Programming Language :: Python :: 3.9,Programming Language :: Python :: 3.10,Programming Language :: Python :: 3.11,Topic :: Scientific/Engineering :: Artificial Intelligence, ] keywords [openai, sales, gpt, autonomous, agi][tool.poetry.dependencies] python ^3.8.1 langchain 0.1.0 openai 1.7.0 chromadb ^0.4.18 tiktoken ^0.5.2 pydantic ^2.5.2 litellm ^1.10.2 ipykernel ^6.27.1 pytest ^7.4.3 pytest-cov ^4.1.0 pytest-asyncio ^0.23.1 langchain-openai 0.0.2[tool.poetry.group.dev.dependencies] black ^23.11.0 flake8 ^6.1.0 isort ^5.12.0 pytest ^7.4.3 pytest-cov ^4.1.0[build-system] requires [poetry-core] build-backend poetry.core.masonry.api大概可以猜出来这是一个类似配置文件的东西上面有项目的基本信息然后是项目的依赖基本上可以确定这个文件就是顶替requirements.txt的这个叫poetry的东西我们之前没有接触过不过在网上能找到大把资料我们花一小节简单介绍一下这个东西。 poetry介绍 简单来说对于较大型、复杂和需要部署的项目需要有好的依赖管理、虚拟环境管理、打包和发布的工具poetry就是来做这个的。poetry的主要作用有如下三点 1. 项目的依赖管理下载和追踪。替代pip的功能 2. 虚拟环境的管理。替代传统的python虚拟环境构建方法poetry直接生成一个可直接使用的虚拟环境。 3. 打包和发布管理。这个我们知道就行了暂时还用不上。 这个是poetry的官网和一些我觉得介绍poetry比较好的CSDN博主介绍文章 1. 官网Poetry - Python dependency management and packaging made easy 2. poetry其他博主的介绍Python 依赖管理及打包三方库 Poetry_python poetry-CSDN博客 大家可以自己花一些时间去看一下poetry这个管理工具怎么用我觉得这个工具设计得还是蛮好的对于依赖管理、虚拟环境管理和打包发布都很方便以后我们自己的大型项目我们也都用poetry好了。 运行文件run.py 和 run-api.py分析 我们看一下项目里的可运行文件.py只有两个 我们来看一下run.py的代码 import argparse import json import osfrom dotenv import load_dotenv from langchain_community.chat_models import ChatLiteLLMfrom salesgpt.agents import SalesGPTload_dotenv() # loads .env file# LangSmith settings section, set TRACING_V2 to true to enable it # or leave it as it is, if you dont need tracing (more info in README) os.environ[LANGCHAIN_TRACING_V2] false os.environ[LANGCHAIN_ENDPOINT] https://api.smith.langchain.com os.environ[LANGCHAIN_API_KEY] os.getenv(LANGCHAIN_SMITH_API_KEY) os.environ[LANGCHAIN_PROJECT] # insert you project name here 引入必要的包load_dotenv()用来加载环境变量主要是openai_key。然后是langchain_smith的引入langchain_smith是用来进行过程监督和控制的这个我们有时间单独来讲一下这个东西是一个辅助管理工具可以不要。 然后是main函数里面的东西 if __name__ __main__:# Initialize argparseparser argparse.ArgumentParser(descriptionDescription of your program)# Add argumentsparser.add_argument(--config, typestr, helpPath to agent config file, default)parser.add_argument(--verbose, typebool, helpVerbosity, defaultFalse)parser.add_argument(--max_num_turns,typeint,helpMaximum number of turns in the sales conversation,default10,)# Parse argumentsargs parser.parse_args()# Access argumentsconfig_path args.configverbose args.verbosemax_num_turns args.max_num_turns 这个argparse也是一个新东西我们之前也没见过来看看它是做什么的。这个模块的介绍资料网上也是大把argparse简介-CSDN博客argparse 模块是 Python 内置的用于命令项选项与参数解析的模块argparse 模块可以让人轻松编写用户友好的命令行接口能够帮助程序员为模型定义参数。 这块代码的作用就是方便用户运行代码时进行输入的通过命令行其中最主要的是 max_num_turns这个参数有实际的用处。我们之前介绍过agentagent会不断审查agent_executor的执行结果有可能就进死循环了而且会不断消耗token所以需要设置一个最大运行轮次来控制agent的循环轮次。这个参数就和我们之前在构造agentexecutor里设置的max_iterations是一个东西【2024最全最细LangChain教程-13】Agent智能体二-CSDN博客 这里面有这个参数我直接截图了 可以看到上面的代码主要是用来获取用户输入的我们继续来看代码 llm ChatLiteLLM(temperature0.2, model_namegpt-3.5-turbo-instruct)if config_path :print(No agent config specified, using a standard config)# keep boolean as string to be consistent with JSON configs.USE_TOOLS Trueif USE_TOOLS True:sales_agent SalesGPT.from_llm(llm,use_toolsUSE_TOOLS,product_catalogexamples/sample_product_catalog.txt,salesperson_nameTed Lasso,verboseverbose,)else:sales_agent SalesGPT.from_llm(llm, verboseverbose)else:with open(config_path, r, encodingUTF-8) as f:config json.load(f)print(fAgent config {config})sales_agent SalesGPT.from_llm(llm, verboseverbose, **config) 这里构造了一个llm然后判断一下用户之前的输入有没有config信息如果没有项目config信息的话就构造一个默认的sales_agent注意这里使用的SalesGPT的 from_llm方法这个方法是后面我们关注的重点。这个agent使用了一个默认的产品目录和销售人员名称。 这块代码有点让人困惑的就是这块大家应该知道我在说啥 这段代码运行到这里我们就成功构造了一个sales_agent然后我们继续往下走 sales_agent.seed_agent()print( * 10)cnt 0while cnt ! max_num_turns:cnt 1if cnt max_num_turns:print(Maximum number of turns reached - ending the conversation.)breaksales_agent.step()# end conversationif END_OF_CALL in sales_agent.conversation_history[-1]:print(Sales Agent determined it is time to end the conversation.)breakhuman_input input(Your response: )sales_agent.human_step(human_input)print( * 10) 然后我们用seed_agent()这个方法来初始化一下这个agent然后就开始进入用户输入、系统输出的阶段了这里都是用CMD来交互的。 这里会用到之前我们设置的max_num_turns这个参数如果达到了这个上限就终止对话如果没有的话就调用sagels_agent的step方法来进行输出。 如果sales_agent的会话历史conversation_history的最后一个元素不是END_OF_CALL就让用户进行他的输入并把用户输入放到sales_agent的human_step这个方法里作为入参。 可以看到run.py整个代码的逻辑是设置用户命令行输入的参数结构如果没有的话就用默认设置然后初始化agent然后让agent先向用户提问然后让用户通过命令行输入然后一轮一轮进行对话直到到达用户设置的最大轮次默认是10次或者对话完结。这个基本上就是run.py的整个业务流程。不难看出这里最重要的就是 from salesgpt.agents import SalesGPT 从这里引入的SalesGPT这个类了通过这个类实例化构造的agent是整个业务逻辑的核心下节课我们开始重点分析SalesGPT这个类。 最后我们来看看run-api.py这个文件 import os from typing import Listimport uvicorn from fastapi import FastAPI from pydantic import BaseModelfrom salesgpt.salesgptapi import SalesGPTAPIapp FastAPI()GPT_MODEL gpt-3.5-turbo-0613 # GPT_MODEL_16K gpt-3.5-turbo-16k-0613app.get(/) async def say_hello():return {message: Hello World}class MessageList(BaseModel):conversation_history: List[str]human_say: strapp.post(/chat) async def chat_with_sales_agent(req: MessageList):sales_api SalesGPTAPI(config_pathexamples/example_agent_setup.json, verboseTrue)name, reply sales_api.do(req.conversation_history, req.human_say)res {name: name, say: reply}return resdef _set_env():with open(.env, r) as f:env_file f.readlines()envs_dict {key.strip(): value.strip(\n)for key, value in [(i.split()) for i in env_file]}os.environ[OPENAI_API_KEY] envs_dict[OPENAI_API_KEY]if __name__ __main__:_set_env()uvicorn.run(app, host127.0.0.1, port8000)简单浏览一下整个代码尤其是main函数里的东西就大概知道了这是要用FASTAPI一种用python快速构建服务端的工具来构建一个可以给前端响应的后端服务那我们就基本明白了这是聚焦于如何和用户交互获取用户输入信息的另外一个版本和run.py没有啥本质的区别就是交互方式不一样了所以我们也不需要花太多时间在这个上面。如果到了服务要部署的时候我们再系统地学习一遍FASTAPI工具然后模仿他这块的代码就行后面我们就不讲这块代码了我们就用run.py的命令行方式来和agent交互就足够了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/92127.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

横沥网站仿做门类细分网站

《计算机文化基础实训》教学方案设计与课题分析总结.doc《计算机文化基础一实训》教学方案设计与课题分析总结袁良风[ 】我院自开展木课题研宄工作以来,紧紧围绕“项目教学法”教学的应 用问题,积极主动地开展专题研究和教改实验,…

有没有接单做加工的网站加盟型网站建设

http://www.cnblogs.com/zhenyulu/category/6930.html 吕震宇的博客园,关于设计模式介绍的比较全面。很值得学习的博客转载于:https://www.cnblogs.com/wangzihao/archive/2012/05/23/2514485.html

做域名后就得做网站吗怎么建立自己网站 asp

整理文档 ‍ ‍ 实验环境 服务器 最低配置要求: 2 核虚拟 CPU4 GB 内存20 GB 储存空间X 4 台 (三台集群,一台镜像仓库服务器) 网络环境 由于搭建网络需要,同时要让各个主机互通,因此这里需要对云服务器设置专门的网络(同时也需要开放服务器对应的公网 IP) 在云…

怎么自己搭建博客网站seo 新老网站替换 域名不变

宠辱不惊,闲看庭前花开花落;去求无意,漫随天外云卷云舒。 做人,赢在格局,输在计较

黄山网站建设哪家强晋江wap站是什么意思

定义一个类对象时,首先根据初始化列表初始化类的成员(就算没有显式定义初始化列表,编译器也会默认地初始化一次),然后运行构造函数。因此,类成员的构造函数必定先于类的构造函数运行。 class A { public:A(…

做网站应该掌握的技术查关键词排名网

一.预定义符号 1.__FILE__进行编译的源文件 2.__LINE__文件当前的行号 3.__DATE__文件被编译的日期 4.__TIME文件被编译的时间 5.__STDC__如果编译器遵循ANSIC,其值为1,否则未定义 二.#define 基本语法:#define 名字 内容 eg.define M 1 经#define定义的常量时不经过…

住建部网站资质查询中宏建设集团不建网站如何做淘宝客

main.res.srcDirs "src/main/res_test" build->android->sourceSets

网页站点wordpress app插件

一、CNN训练模型 模型尺寸分析:卷积层全都采用了补0,所以经过卷积层长和宽不变,只有深度加深。池化层全都没有补0,所以经过池化层长和宽均减小,深度不变。http://download.tensorflow.org/example_images/flower_photo…

织梦网站用户名不存在海南seo关键词

VTK中鼠标消息是在交互类型对象(interactorstyle)中响应,因此通过为交互类型对象(interactorstyle)添加观察者(observer)来监听相应的消息,当消息触发时,由命令模式执行相…

html5网站网址中核哪个公司待遇最好

欢迎各位数据爱好者!今天,我很高兴与您分享我的最新博客,专注于探索 PySpark DataFrame 的强大功能。无论您是刚入门的数据分析师,还是寻求深入了解大数据技术的专业人士,这里都有丰富的知识和实用的技巧等着您。让我们…

安徽网站建设案例万方网官网入口

本题是一个经典的单调队列题。不过用优先队列也能解决。 一、优先队列 在使用优先队列时,我们会遇到这样的问题:如何将一个目标数从优先队列中弹出?如果使用stl这是办不到的,虽然可以自行实现这样的功能。但是我们可以这样思考&am…

做设计常用的素材网站网站开发网站源码

上一篇已经讲解了如何构建自己的私人GPT,这一篇主要讲如何让GPT支持中文。 privateGPT 本地部署目前只支持基于llama.cpp 的 gguf格式模型,GGUF 是 llama.cpp 团队于 2023 年 8 月 21 日推出的一种新格式。它是 GGML 的替代品,llama.cpp 不再…

手机网站导航设计手机app设计软件

原理: 在onReachBottom中进行节流处理,如果当前正在请求下一页的数据,则把后续所有的请求都屏蔽掉,如果当前没有请求任何数据,才允许发起下一页数据的请求。 实现步骤: 在data中定义isloading节流阀 fal…

广州外贸公司排名怎么做网站标题优化

JUnit JUnit 是一个用于编写可重复测试的简单框架。 它是 xUnit 架构的一种实例,专门用于单元测试框架。 What to test? NeedDescRight结果是否正确B边界条件是否满足I能反向关联吗C有其他手段交叉检查吗E是否可以强制异常发生P性能问题 maven 入门例子 maven …

Wordpress税表企业网站怎么优化

一、填空题(每空0.5分,共 1 0 分)1、 计算机图形学中的图形是指由点、线、面、体等 和明暗、灰度(亮度)、色彩等 构成的,从现实世界中抽象出来的带有灰度、色彩及形状的图或形。 2、 一个计算机图形系统至少应具有 、 、输入、输出、 等基本功能。3、 常…

迅速百度网站自然排名开发一个app平台大概需要多少钱?

1888 年,爱迪生提交了一项名为「活动电影放映机」的专利,该设备首次实现连续播放静态照片,形成类似动态画面的效果,由此拉开了视频发展的序幕。 回顾历史,视频经历了从无到有、从黑白到彩色、从模拟信号到数字信号的迭…

网站怎么优化seo有没有专门做淘宝客的网站

Jmeter有个配置元素叫做用户自定义变量(英文名称是UserDefinedVariables)而我们提到的vars即是Variables的简写。 之前我们也说到过Jmeter的脚本中(jsr223sampler或者beanshell编写的脚本)使用varsput和varsget的操作(varsget和put的操作仅在threadgroup测试组线程中执行&#…

做企业免费网站哪个好些网站制作一薇

By.CSS_SELECTOR 是 Selenium WebDriver 提供的一种定位元素的方法,它允许使用 CSS 选择器来定位页面上的元素。以下是常见的 CSS 选择器语法: 1. **标签选择器(Tag Selector)**:通过元素的标签名选择元素。 - 示例…

最好的网站模板网站网页制作与网站建设宝典 第2版

你在用什么软件进行图像处理呢?厌倦了鼠标和手指的拖拖点点,想不想用程序和代码进行图像的高效处理,Python作为简单高效又很强大的一门编程语言,对于图像的处理自然也是轻松拿下,听起来是不是很酷很极客,那…

网站内容填写建设网站有哪些方法

HAProxy系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 1.反向代理为什么需要设置cookie 任何一个七层的http负载均衡器,都应该具备一个功能:会话保持。会话保持是保证客户端对动态应用程序正确请求的基本要求。 还是那个被举烂…