先在服务器搭建一个jupyter方便统一一个python环境,注意python的环境至少是3.7以上哦,建议安装pip3
主要使用langchain跟大模型通讯,实现工作流编排
langchain文档:
https://python.langchain.com/v0.1/docs/modules/agents/how_to/agent_iter/
本次主要使用langchain的Agent功能,通过跟LLM模型对话后的结果,调用指定的tool工具集,清洗后得到自己想要的数据,帮助业务进行下一步的操作
(利用大模型的能力帮助思考和判断的前置工作流,比如问大模型:青眼白龙的效果,然后大模型回答答案的同时调用我们工具集,工具集可以实现业务接口传递,返回给用户一个业务中的交易场景等,方便下一步的业务做二次处理)
langchain简易中文文档(第三方社区版):
https://www.tizi365.com/topic/1820.html
部署好环境和下载好langchain框架后,获得对应的模型(如GPT)的api配置参数
直接上测试代码
from langchain.chat_models import ChatOpenAI
from langchain.agents import tool,OpenAIFunctionsAgent, AgentExecutor
from langchain.schema import SystemMessage
import sys
import os
import json
# 获取命令行参数
args = sys.argv
# 第一个参数是脚本本身的文件名,所以从第二个参数开始获取
if len(args) >= 2:
keyword = args[1]
print ("传入的关键词是:", keyword)
else:
print ("未传入关键词参数111")
#open ai key
openai_api_key="your api key"
#open ai 代理地址, 以后的/v1是必须的
openai_api_base="https://openai.wndbac.cn/v1"
llm = ChatOpenAI(temperature=0, openai_api_key=openai_api_key,openai_api_base=openai_api_base)
called_tool_return = None
@tool
def get_card_info(word: str) -> str:
"""返回word的关键词对应的卡牌效果."""
#如果word等于"青眼白龙", 则 return "青眼白龙是一只非常强大的怪兽";
# return "get_card_info(word)"
msg = "调用函数get_card_info('{}')".format(word)
global called_tool_return
called_tool_return = msg
return msg
@tool
def get_card_version_by_lowest_price(word: str) -> str:
"""获取最低价格的卡版本."""
# return "getCardVersionByLowestPrice"
msg = "调用函数get_card_version_by_lowest_price('{}')".format(word)
global called_tool_return
called_tool_return = msg
return msg
@tool
def get_deck_by_theme_name(word: str) -> str:
"""根据游戏主体获取对应的卡组."""
msg = "调用函数get_deck_by_theme_name('{}')".format(word)
global called_tool_return
called_tool_return = msg
return msg
tools = [get_card_info,get_card_version_by_lowest_price,get_deck_by_theme_name]
# 我们使用的是chat模型,这里定义AI扮演的角色
system_message = SystemMessage(content="你是一个AI助手,你非常擅长集换式游戏卡牌的领域")
prompt = OpenAIFunctionsAgent.create_prompt(system_message=system_message)
# 定义openai的function agent
# 指定llm可以调用的工具集合tools
agent = OpenAIFunctionsAgent(llm=llm, tools=tools, prompt=prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=False)
result = agent_executor.run(keyword)
# print(result)
call_function_return = called_tool_return
print(f"called tool: {call_function_return}")