步骤 02 - LLM 配置
在本步骤中,我们将调整语言模型(LLM)的各种配置,这些配置将在后续步骤中使用。
您可以使用来自 step-01 的代码继续,或者查看位于 step-02
目录中的最终代码。
不要忘记关闭应用程序
如果您从上一步运行了应用程序,并且决定使用 step-02
目录,请确保在继续之前停止它(按 Ctrl+C)。
配置
应用程序通过 src/main/resources/application.properties
文件进行配置。
quarkus.langchain4j.openai.api-key=${OPENAI_API_KEY}
quarkus.langchain4j.openai.chat-model.model-name=gpt-4o
quarkus.langchain4j.openai.chat-model.log-requests=true
quarkus.langchain4j.openai.chat-model.log-responses=true
# If you want to use a different provider or run an LLM on your local machine,
# uncomment this line and update the url/port accordingly.
#quarkus.langchain4j.openai.base-url=https://:35000/v1
quarkus.langchain4j.timeout=1m
quarkus.langchain4j.openai.api-key
属性是 OpenAI API 密钥。在我们的例子中,我们将其配置为从 OPENAI_API_KEY
环境变量读取。
其余配置指定了使用的模型(gpt-4o
)以及是否将请求和响应记录到终端的模型。
重新加载
更改配置属性后,您需要强制重启应用程序以应用更改。仅提交 UI 中的新聊天消息不会触发它(它只发送 websocket 消息而不是 HTTP 请求),因此您必须刷新浏览器中的页面。
信息
大多数模型参数的精确含义可以在 OpenAI 网站上找到。
Temperature(温度)
quarkus.langchain4j.openai.chat-model.temperature
控制模型响应的随机性。降低温度会使模型更保守,而提高温度会使其更具创造性。
尝试添加
到 src/main/resources/application.properties
并尝试提问
然后将温度设置为 1.5
并再次提问,观察响应的不同风格。温度过高,模型通常会开始产生无意义的内容,响应时间过长,或者根本无法产生有效的响应。
需要确定性响应的应用程序应将温度设置为 0。请注意,这并不能保证相同的输入产生相同的响应,但会使响应更可预测。
需要更多创造力的应用程序(例如,为故事生成文本)可以将温度设置为 0.3 或更高。
目前,将温度设置为 1.0
。
Max tokens(最大令牌数)
quarkus.langchain4j.openai.chat-model.max-tokens
限制响应的长度。
尝试添加
到 src/main/resources/application.properties
,看看模型如何将响应截断为 20 个令牌。
令牌不是单词,而是模型可以生成的文本的最小单元。例如,“Hello, world!” 有 3 个令牌:“Hello”、“,” 和 “world”。每个模型都有不同的令牌化方案,因此句子中的令牌数量会因模型而异。
目前,将最大令牌数设置为 1000
。
Frequency penalty(频率惩罚)
quarkus.langchain4j.openai.chat-model.frequency-penalty
定义了模型应该在多大程度上避免重复自己。
尝试添加
到 src/main/resources/application.properties
,然后提问
模型很可能会在重复词语几次后开始产生无意义的内容。
将值更改为 0
,您可能会看到模型重复该词 50 次。
信息
OpenAI 模型的最大惩罚值为 2
。
最终配置
在调整完配置后,您可以将其设置为以下值:
quarkus.langchain4j.openai.api-key=${OPENAI_API_KEY}
quarkus.langchain4j.openai.chat-model.model-name=gpt-4o
quarkus.langchain4j.openai.chat-model.log-requests=true
quarkus.langchain4j.openai.chat-model.log-responses=true
quarkus.langchain4j.openai.chat-model.temperature=1.0
quarkus.langchain4j.openai.chat-model.max-tokens=1000
quarkus.langchain4j.openai.chat-model.frequency-penalty=0
现在让我们切换到 下一步!