一. 代码说明
我们对代码稍作修改,一个是支持多次人工输入,而不是一次性的预先输入,另一个是重点修改descrription描述,以指导agent以更快的方式生成代码,代码如下
import dashscope
import os
from langchain_community.llms import tongyi
from langchain.agents import initialize_agent
from langchain.tools import tool
from langchain.utilities.python import PythonREPL
import textwrap
from langchain.agents import (
Tool,
AgentExecutor,
agent,
)
import time
import random
dashscope.api_key="sk-bb1e64ed39b64aa49195280a8a52cfae"
#新增解析返回数据
def output_response(response: str) -> None:
if not response:
exit(0)
for line in textwrap.wrap(response, width=60):
for word in line.split():
for char in word:
print(char, end="", flush=True)
time.sleep(0.1) # Add a delay of 0.1 seconds between each character
print(" ", end="", flush=True) # Add a space between each word
print() # Move to the next line after each line is printed
print("----------------------------------------------------------------")
def saveFile(replyMessages: str):
print('... to save the file ...')
python_path="/home/cfets/eclipse-workspace/TestAI/testchain/"
now_time = time.strftime('%Y-%m-%d_%H:%M:%S', time.localtime())
i = random.randint(1, 100)
code_file = python_path + "pyAITest_" + now_time + '_' + str(i) + ".py"
# 保存至文件
res_content=False
try:
with open(code_file, 'w') as f:
f.write(replyMessages)
res_content =True
except Exception as e:
print('Error: %s' % e)
return res_content
@tool
def py_repl_tool(code: str):
"""Returns the result of execution."""
_, after = code.split("```python")
realcode = after.split("```")[0]
py_repl=PythonREPL()
#print('realcode: %s' % realcode)
#保存文件
if saveFile(realcode):
print('file is saved ... ')
return py_repl.run(realcode)
if __name__ == '__main__':
os.environ["DASHSCOPE_API_KEY"] = dashscope.api_key
tools = [
Tool(
name = "python_1",
func=py_repl_tool.run,
description="""请使用python,通过akshare接口获取市场行情,然后按指定的股票代码过滤该股票的行情,
要求:
1,请使用以em结尾的方法接口,不要使用新浪接口
2,返回字段使用中文“代码” 筛选,再按“最新价”
3,最后用print方法打印行情
代码格式为
e.g.:
```python
....
```"""
), #修改描述
]
agent = initialize_agent(
llm=tongyi.Tongyi(model_name="qwen-max",temperature=0),
tools=tools,
verbose=True,
max_iterations=5,
)
#agent.run("What is the 10th fibonacci number?")
#agent.run("股票300001现在的市场价格是多少?")
# 支持多次人工输入
while True:
try:
user_input = input("请输入6位股票代码 :")
response = agent.run(user_input)
output_response(response)
except KeyboardInterrupt:
break
我们重点看一下agent的description,根据之前踩坑的经验,告诉AI几条
1 用什么工具(python)什么库(akshare库),按什么规则解决什么问题(获取市场行情,然后按指定的股票代码过滤该股票的行情)
2 几条要求,实际上是避免踩坑
1) 要求其使用stock_zh_a_spot_em()接口(注意,如果直接写,可能更稳定一些)
2) 避免AI使用英语列名导致错误
3) 要打印结果
这更像是技术设计的描述,越接近于代码生成的代码越是准确,当然如果过度的话,那么自动生成代码的意义就不大了…
另外需要说明的是max_iterations=5 这个参数表示迭代次数(5次),从实际运用的角度看,就是如果一次生成后,py_repl.run(realcode)执行报异常,会再次生成代码并执行,直到不报异常; 每一轮执行都会生成一个代码并保存
二 执行验证
我们可以看一下执行结果
执行了两次,分别差了300015和002389
再执行生成保存的代码验证一下(002389)
这个应用看上去非常简单,那有没有实际意义呢?
我们通过直接执行通义千问试试,要求他按股票代码给出现在的股价,结果是不支持的… 原因也写了
通过这个案例,我们可以理解,直接应用大模型对话,大模型提供的回答实际上是基于数据空间,不一定是真实世界。 但如果应用Agent,则可以驱动大模型通过一定的工具在现实世界里找到答案…
是这样吗? 我再尝试一下文心一言,同样是找现实股票当下的股价
文心一言给出了答案… 那Agent能不能做到文心一言对话也做不到的任务呢?
继续,我们进一步要求,按股票代码按最近5天的K线数据,结果是… 做不到
我们看看Agent能否做到
description="""请使用python,通过akshare接口获取指定股票最近5天的行情
包括:
1,如果股票代码包含“300”,请转换为“sz300***”,如果股票包含“600”,请转换为“sh600***”
2,请先用最新历史行情接口,按个股获取最近5天的开盘价、收盘价,最高价,最低价,返回列表,并用print方法打印数据
代码格式为
e.g.:
```python
....
```"""
稍作说明,
- py_repl.run暂时不支持作图,所以仅要求提供5天的K线数据,包括开盘价、收盘价,最高价,最低价,
- 第一条要求主要是对应akshare相关历史行情接口,比较变态的入参要求 ak.stock_zh_a_daily(symbol=“sz000001”, start_date=“19910403”, end_date=“20231027”, adjust=“qfq”)
print(stock_zh_a_daily_qfq_df)
我们看执行效果和生成代码
AI折腾了几轮,终于折腾出结果…
说明: 仅有三组是因为最近5天包含了周末两天…
我们看一下最后自动生成的代码执行结果,完全一致
终于,大模型通过Agent,向我们张开双臂,欢迎走进现实世界,您现在可以用对话驱动现实世界干活了…
下一步的改进,应该是要解决几个问题,1 能否实现,先测试后存盘,即依据测试正确结果保存代码 2 进一步,输入现有的代码,在此基础上按新的需求进行修改,再测试,再存盘 3 更进一步,如何利用现有代码资产实现需求,如果现有代码不能满足需求,再生成新的代码 …
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
![](https://img-blog.csdnimg.cn/img_convert/0dc35641cd2d85e39db6e8cb368fa5cb.png)