初识langchain

先在服务器搭建一个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}")

添加新评论