展览网站制作,简单网页设计模板素材,建设银行镇海支行网站,门户网站重要性背景
楼主决定提升与LLM交互的质量#xff0c;之前是直接prompt-answer的范式#xff0c;现在我希望能用上ReAct策略和能够检索StackOverflow#xff0c;让同一款LLM发挥出更大的作用。
难点
1. 怎样调用StackOverflow
step1 pip install stackspi
step 2
from la…
背景
楼主决定提升与LLM交互的质量之前是直接prompt-answer的范式现在我希望能用上ReAct策略和能够检索StackOverflow让同一款LLM发挥出更大的作用。
难点
1. 怎样调用StackOverflow
step1 pip install stackspi
step 2
from langchain.agents import load_toolstools load_tools([stackexchange],llmllm
)
注stackoverflow是stackexchange的子网站
2. 交互次数太多token输入超出了llm限制
approach 1 使用ConversationSummaryBufferMemory
这种记忆方式会把之前的对话内容总结一下限制在设定的token个数内
from langchain.memory import ConversationSummaryBufferMemorymemory ConversationSummaryBufferMemory(llm llm, # 这里的llm的作用是总结max_token_limit4097,memory_keychat_history
)
approach 2 设置参数max_iterations
agent ZeroShotAgent(llm_chainllm_chain, toolstools, max_iterations4, # 限制最大交互次数防止token超过上限verboseTrue
)
3. llm总是回复无法回答
很多教程把温度设置成0说是为了得到最准确的答案但是我发现这样设置agent会变得特别谨慎直接说它不知道温度调高以后问题解决了。
测试问题 What parts does a JUnit4 unit test case consist of? 代码
from constants import PROXY_URL,KEYimport warnings
warnings.filterwarnings(ignore)import langchain
langchain.debug Truefrom langchain.agents import load_tools
from langchain.chat_models import ChatOpenAIfrom langchain.agents import AgentExecutor, ZeroShotAgent
from langchain.chains import LLMChain
from langchain.memory import ConversationSummaryBufferMemoryllm ChatOpenAI(temperature0.7, # 如果参数调得很低会导致LLM特别谨慎最后不给答案model_namegpt-3.5-turbo-0613, openai_api_keyKEY,openai_api_basePROXY_URL
)memory ConversationSummaryBufferMemory(llm llm, # 这里的llm的作用是总结max_token_limit4097,memory_keychat_history
)prefix You should be a proficient and helpful assistant in java unit testing with JUnit4 framework. You have access to the following tools:
suffix Begin!{chat_history}
Question: {input}
{agent_scratchpad}tools load_tools([stackexchange],llmllm
)prompt ZeroShotAgent.create_prompt(tools,prefixprefix,suffixsuffix,input_variables[input, chat_history, agent_scratchpad],
) # 这里集成了ReActllm_chain LLMChain(llmllm, promptprompt)agent ZeroShotAgent(llm_chainllm_chain, toolstools, max_iterations4, # 限制最大交互次数防止token超过上限verboseTrue
)agent_chain AgentExecutor.from_agent_and_tools(agentagent, toolstools, verboseTrue, memorymemory
)def ask_agent(question):answer agent_chain.run(inputquestion)return answerdef main():test_question What parts does a JUnit4 unit test case consist of?test_answer ask_agent(test_question)return test_answerif __name__ __main__:main()最后输出 [chain/end] [1:chain:AgentExecutor] [75.12s] Exiting Chain run with output: { output: A JUnit4 unit test case consists of the following parts:\n1. Test class: This is a class that contains the test methods.\n2. Test methods: These are the methods that contain the actual test code. They are annotated with the Test annotation.\n3. Assertions: These are used to verify the expected behavior of the code being tested. JUnit provides various assertion methods for this purpose.\n4. Annotations: JUnit provides several annotations that can be used to configure the test case, such as Before, After, BeforeClass, and AfterClass.\n\nOverall, a JUnit4 unit test case is a class that contains test methods with assertions, and can be configured using annotations. }