目录
简介
什么是提示词工程?
提示词工程是一种利用自然语言处理技术,通过设计和优化提示词来引导大语言模型(LLM)生成所需输出的技术。它在人工智能应用中扮演着重要角色,尤其是在需要生成自然语言文本的场景中。
官方的解释太官方了😂,简单来说,提示词工程就是就是教AI说人话,做人事。
就像训练自家二哈听懂指令一样,通过设计各种"暗号"(提示词),让大语言模型这个聪明但耿直的学霸能精准输出我们想要的答案~
举个栗子🌰:与其让AI随便写诗,不如说"来首李白风格的七言绝句,主题是程序员加班",这就是提示词工程的魅力!
另外,强烈安利NVIDIA的深度学习培训中心的课程开发基于提示工程的大语言模型(LLM)应用,提供了完备的云端实验环境和一整套实验课程,能够帮助你实践出真知,更加深刻地完成相关内容的学习。

为什么选择Langchain?
langchain简直就是提示词工程师的瑞士军刀!作为专为LLM交互打造的开发框架,它让调教AI变得像搭乐高积木一样简单。
Hello World 三连
学习要从Hello World开始,下面有三个版本,分别基于不同的promt工程库。
基于OpenAI库的版本
from openai import OpenAI
# base_url 使用你自己的地址
base_url = 'http://llama:8000/v1'
# api_key 使用你自己获取的key
api_key = 'an_arbitrary_string'
client = OpenAI(base_url=base_url, api_key=api_key)
model = 'meta/llama-3.1-8b-instruct'
prompt = 'Tell me a fun fact about space.'
response = client.chat.completions.create(
model=model,
messages=[{
'role': 'user', 'content': prompt}]
)
model_response = response.choices[0].message.content
print(model_response)
基于原版Langchain的版本
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
prompt = ChatPromptTemplate.from_template("What is the capital of France?")
model = ChatOpenAI(model="gpt-4")
chain = prompt | model
result = chain.invoke({
})
print(result.content)
基于NVIDIA版langchain的版本
from langchain_nvidia_ai_endpoints import ChatNVIDIA
# base_url 使用你自己设置的地址
base_url = 'http://llama:8000/v1'
# model 使用你自己部署的模型
model = 'meta/llama-3.1-8b-instruct'
llm = ChatNVIDIA(base_url=base_url, model=model, temperature=0)
prompt = 'Who are you?'
result = llm.invoke(prompt)
print(result.content)
一些基本的概念
LCEL(LangChain表达式语言)和运行时(Runnable)
LCEL是一种声明式的方式,可以轻松地将不同的Langchain组件(实际上就是所谓的运行时函数Runnable)组合在一起。这种组合使用"|"管道符来进行,熟悉LINUX的朋友们知道,管道符可以很轻松的把上一个组件的输出转换成下一个组件的输入。下面是一个简单的例子。Langchain的灵活性和强大的组合能力使其在复杂的提示词工程中表现出色。
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
prompt = ChatPromptTemplate.from_template("tell me a short joke about {topic}")
model = ChatOpenAI(model="gpt-4")
# 这是一个输出解析器,可以很方便的从LLM的结果中解析输出。
output_parser = StrOutputParser()
# 请注意这行代码,使用LCEL将不同的函数组合成一个chain:
chain = prompt | model | output_parser
chain.invoke({
"topic": "ice cream"})
下面是这个chain的流程图:
graph LR
A(输入:topic=ice cream) --> |字典| B(PromptTemplate)
B -->|PromptValue| C(ChatModel)
C -->|ChatMessage| D(StrOutputParser)
D --> |字符串| F(结果)
那么对于不是Langchain组件的函数,该怎么办呢?我们需要请出一位重量级选手:RunnableLambda它可以把任意函数转换为LangChain使用的运行时函数。下面给个例子:
from langchain_core.runnables import RunnableLambda
def double(x):
return 2*x
try:
double.invoke(2) #这里会异常
except AttributeError:
print(

最低0.47元/天 解锁文章
661

被折叠的 条评论
为什么被折叠?



