Jobs
The Jobs class is a collection of agents, scenarios and models and one survey. It is used to run a collection of interviews.
Base Question
This module contains the Question class, which is the base class for all questions in EDSL.
- class edsl.questions.QuestionBase.QuestionBase[source]
Bases:
PersistenceMixin
,RichPrintingMixin
,SimpleAskMixin
,QuestionBasePromptsMixin
,QuestionBaseGenMixin
,ABC
,AnswerValidatorMixin
ABC for the Question class. All questions inherit from this class. Some of the constraints on child questions are defined in the RegisterQuestionsMeta metaclass.
- add_question(other: QuestionBase) Survey [source]
Add a question to this question by turning them into a survey with two questions.
>>> from edsl.questions import QuestionFreeText as Q >>> from edsl.questions import QuestionMultipleChoice as QMC >>> s = Q.example().add_question(QMC.example()) >>> len(s.questions) 2
- property data: dict[source]
Return a dictionary of question attributes except for question_type.
>>> from edsl import QuestionFreeText as Q >>> Q.example().data {'question_name': 'how_are_you', 'question_text': 'How are you?'}
- classmethod from_dict(data: dict) Type[QuestionBase] [source]
Construct a question object from a dictionary created by that question’s to_dict method.
- html(scenario: dict | None = None, agent: dict | None = {}, include_question_name: bool = False, height: int | None = None, width: int | None = None, iframe=False)[source]
Return the question in HTML format.
- human_readable() str [source]
Print the question in a human readable format.
>>> from edsl.questions import QuestionFreeText >>> QuestionFreeText.example().human_readable() 'Question Type: free_text\nQuestion: How are you?'
- property name: str[source]
Helper function so questions and instructions can use the same access method
- question_text: str[source]
Validate that the question_text attribute is a string.
>>> class TestQuestion: ... question_text = QuestionTextDescriptor() ... def __init__(self, question_text: str): ... self.question_text = question_text
>>> _ = TestQuestion("What is the capital of France?") >>> _ = TestQuestion("What is the capital of France? {{variable}}") >>> _ = TestQuestion("What is the capital of France? {{variable name}}") Traceback (most recent call last): ... edsl.exceptions.questions.QuestionCreationValidationError: Question text contains an invalid identifier: 'variable name'
- async run_async(just_answer: bool = True, model: 'Model' | None = None, agent: 'Agent' | None = None, **kwargs) Any | 'Results' [source]
Call the question asynchronously.
>>> import asyncio >>> from edsl import QuestionFreeText as Q >>> m = Q._get_test_model(canned_response = "Blue") >>> q = Q(question_name = "color", question_text = "What is your favorite color?") >>> async def test_run_async(): result = await q.run_async(model=m); print(result) >>> asyncio.run(test_run_async()) Blue
- classmethod run_example(show_answer: bool = True, model: 'LanguageModel' | None = None, cache=False, **kwargs)[source]
Run an example of the question. >>> from edsl.language_models import LanguageModel >>> from edsl import QuestionFreeText as Q >>> m = Q._get_test_model(canned_response = “Yo, what’s up?”) >>> m.execute_model_call(“”, “”) {‘message’: [{‘text’: “Yo, what’s up?”}]} >>> Q.run_example(show_answer = True, model = m) ┏━━━━━━━━━━━━━━━━┓ ┃ answer ┃ ┃ .how_are_you ┃ ┡━━━━━━━━━━━━━━━━┩ │ Yo, what’s up? │ └────────────────┘
- to_dict() dict[str, Any] [source]
Convert the question to a dictionary that includes the question type (used in deserialization). >>> from edsl import QuestionFreeText as Q; Q.example().to_dict() {‘question_name’: ‘how_are_you’, ‘question_text’: ‘How are you?’, ‘question_type’: ‘free_text’, ‘edsl_version’: ‘…’}