前言
嗨,大家好!我是海鸽。
《庆余年2》刚刚完结,热度不减,我忍不住好奇:我们的AI伙伴GPT
,是否也对剧中那位机智过人的小范大人有所耳闻?
最近我们尝试了LangChain
的调用,体验了一番免费的千问模型
的问答。现在,我们再次挑战gpt
,继续享受这种白嫖的乐趣。
结果出乎意料,让我大吃一惊!
话不多说,直接来看下过程吧。
安装
首先,依然是要先安装和导入LangChain
和GPT
的相关包。
pip install langchain-openai==0.1.7
pip install langchain==0.2.1
获取 GPT KEY
访问 API 需要一个 API 密钥,本着免费的就是最好的心态,我们继续发扬白嫖的优良传统
。
API 密钥地址后台回复:
GPT_API_free
获取,有条件的可走官网途径(推荐)。
有了 Key,我们就可以开始我们的白嫖之旅了。
老规矩,将其保存在
.env
文件中。
问问 GPT 认不认识小范大人?
让我们问它“介绍一下范闲?详细些!
”
#! -*-conding=: UTF-8 -*-
from langchain_openai import ChatOpenAI
from dotenv import load_dotenv, find_dotenv # 导入dotenv库,用于加载环境变量
_ = load_dotenv(find_dotenv()) # 加载.env文件中的环境变量
llm = ChatOpenAI(temperature=0.9, base_url="https://api.chatanywhere.com.cn/v1",
model_name="gpt-3.5-turbo")
def simple_invoke(_llm):
return _llm.invoke("介绍一下范闲?详细些!")
if __name__ == '__main__':
result = simple_invoke(llm)
print(result)
继续给我胡说八道~~
我们试着使用提示模板指导下它,看看能不能给我像样点的回答!
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from dotenv import load_dotenv, find_dotenv # 导入dotenv库,用于加载环境变量
_ = load_dotenv(find_dotenv()) # 加载.env文件中的环境变量
llm = ChatOpenAI(temperature=0.9, base_url="https://api.chatanywhere.com.cn/v1",
model_name="gpt-3.5-turbo")
output_parser = StrOutputParser()
def template_invoke(_llm):
prompt = ChatPromptTemplate.from_messages([
("system", "你是世界级的小说研究人员,你读过小说《庆余年》。"),
("user", "{input}")
])
prompt_llm = prompt | _llm | output_parser
return prompt_llm.invoke({"input": "介绍一下范闲?详细些!"})
if __name__ == '__main__':
result2 = template_invoke(llm)
print(result2)
好了,算是触碰到GPT 3.5
的知识盲区了。
不是GPT 3.5
更有性价比,实在是GPT 4
用不起。
不过好在,
GPT 4
每天也是有3
次免费机会的。
我们修改下模型为gpt-4
:
llm = ChatOpenAI(temperature=0.9, base_url="https://api.chatanywhere.com.cn/v1",
# model_name="gpt-3.5-turbo")
model_name="gpt-4")
继续执行,这回总算是着调了点:
再问问 千问
认不认识小范大人?
千问
使用见:LangChain入门:白嫖通义千问,打造免费的Qwen大模型聊天机器人
#! -*-conding=: UTF-8 -*-
import os
from dotenv import find_dotenv, load_dotenv
from langchain_community.llms import Tongyi
from langchain_core.runnables import RunnableSequence
from langchain.prompts import PromptTemplate
load_dotenv(find_dotenv())
class QwenTurboTongyi(Tongyi):
model_name = "qwen-turbo"
def xiao_hei_zi():
llm = QwenTurboTongyi(temperature=1)
print(llm.model_name)
template = '''
介绍一下{question}?详细些!
'''
prompt = PromptTemplate(
template=template,
input_variables=["question"]
)
chain = RunnableSequence(prompt | llm)
question = '范闲'
res = chain.invoke({"question": question})
print(res)
if __name__ == '__main__':
xiao_hei_zi()
得到的结果是:
这里,我们仅仅问了qwen-turbo
模型,无提示,效果也还凑合,感兴趣的可以测评下千问的其它模型。
小结
我们已经成功探索了LangChain
中“Chain”的入门技巧。但这只是冰山一角,LangChain
的世界远不止于此。
随着我们深入,高级功能将逐渐展现,赋予我们更强大的逻辑处理能力。
不仅如此,LangChain
还支持自定义Chain
,让我们能够根据特定需求,打造个性化的智能解决方案。
更多python
知识,请关注后续文章更新。